【发布时间】:2013-11-21 16:24:57
【问题描述】:
我在 Nexus 4 - Android 4.3 - api_18 上工作。
当我使用AlarmManager.ELAPSED_REALTIME 安排PendingIntent 时,当设备处于睡眠模式时,闹钟会继续呼叫我的BroadcastReceiver。
文档说当设备进入睡眠状态时,BroadcastReceiver 只被调用一次,然后在设备唤醒时被调用:
如果它在设备睡眠时熄灭,它将不会被传递,直到 下次设备唤醒时。
在我的例子中,BroadcastReceiver 在设备处于睡眠状态时被重复调用。
我的代码
alarmManager.setRepeating(AlarmManager.ELAPSED_REALTIME,
SystemClock.elapsedRealtime(),
DELAI_PLANNIF_TICK,
pendingIntent);
【问题讨论】:
-
你怎么知道你的设备进入睡眠模式?
-
嗨,好问题,我只用设备上的按钮关闭屏幕。当屏幕关闭并且我得到滴答声时,我测试: pm.isScreenOn() 并且它是错误的。我想设备处于睡眠模式呢?
-
在睡眠模式下,CPU处于低功耗状态,因此不执行代码(可能会被警报唤醒),通常在屏幕关闭后几秒钟发生。
-
嗨,好的,我会用 logcat 跟踪它,我会及时通知你。
标签: android alarmmanager android-alarms