2015-10-02 17 views
6

İşletim sistemi Doze modundayken Android uygulamamızın davranışını test etmeye çalışıyorum. Android API 23 (Revizyon 1) çalıştıran bir emülatör kullanıyorum. Uygulama, ELAPSED_REALTIME_WAKEUP tipi ile setInexactRepeating yöntemini kullanarak bir Servis'i AlarmManager üzerinden başlatır. Alarmı yaklaşık her üç dakikada bir yakmaya ayarlıyorum (sadece test amaçlı). Birkaç denemeden sonra (resmi kılavuz çok belirsiz), öykünücünün ekranını kilitleyerek ve önerilen komutları çalıştırarak emülatörü IDLE durumunda bırakmayı başardım. Cihaz IDLE olduğunda, alarm tarafından başlatılan Servisi görebiliyorum. Bu, beklenen davranış olmamalıdır. Alarmın durdurulmasını bekliyordum. Bu bir hata mı? Yoksa bir şey mi özlüyorum?Android M (ön izleme) Doze modu ve AlarmManager

+0

Bu, emülatörle ilgili bir sorundur. Gerçek bir cihazda alarmlar IDLE sırasında belgelendiği gibi durdurulur. –

cevap

0

Test kullanım kodu için aşağıda.

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

kuvvet akıllı telefon Uyanırken için kullanın setAndAllowWhileIdle.

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); }

beklediğim Alarm durdurulması olduğuna inanıyoruz: Benim durumumda

Bunu kullanabilirim.

İlgili konular