2015-10-02 16 views
6

Sto provando a verificare il comportamento della nostra app Android quando il sistema operativo va in modalità Doze. Sto usando un emulatore con Android API 23 (Revisione 1). L'applicazione avvia un servizio tramite AlarmManager utilizzando il metodo setInexactRepeating con tipo ELAPSED_REALTIME_WAKEUP. Ho impostato l'allarme a fuoco all'incirca ogni tre minuti (solo a scopo di test). Dopo diversi tentativi (la guida ufficiale è molto poco chiara) riesco a mettere l'emulatore in stato IDLE bloccando lo schermo dell'emulatore e eseguendo comandi suggeriti da dumpsys. Quando il dispositivo è inattivo, sono ancora in grado di vedere il servizio avviato dall'allarme. Questo non dovrebbe essere il comportamento previsto. Mi aspettavo che l'allarme si fermasse. Si tratta di un bug? O mi sta sfuggendo qualcosa?Android M (anteprima) Modo Doze e AlarmManager

+0

Si tratta di un problema correlato all'emulatore. Su un dispositivo reale, gli allarmi vengono fermati durante l'IDLE come documentato. –

risposta

0

Per il codice di utilizzo test di seguito.

adb shell dumpsys deviceidle enable adb shell dumpsys battery unplug adb shell dumpsys deviceidle step adb shell dumpsys deviceidle force-idle

Usa setAndAllowWhileIdle per smartphone forza sveglia.

Nel mio caso io uso questo:

if (android.os.Build.VERSION.SDK_INT > 22) { am.setAndAllowWhileIdle(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), sender); } else { am.setRepeating(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), AlarmManager.INTERVAL_DAY, sender); }

credo che l'atteso è l'allarme essere fermato.

Problemi correlati