Android AlarmManager - 睡眠时ELAPSED_REALTIME警报继续重复

时间:2013-11-21 16:24:58

标签: android alarmmanager android-alarms

我在Nexus 4上运行 - Android 4.3 - api_18。

当我使用PendingIntent安排AlarmManager.ELAPSED_REALTIME时,当设备处于睡眠模式时,警报会继续调用BroadcastReceiver

文档说当设备进入休眠状态时,BroadcastReceiver只被调用一次,然后当设备唤醒时:

  

如果设备处于睡眠状态时熄灭,则直到设备才会发送   下次设备唤醒时。

就我而言,当设备处于睡眠状态时,会重复调用BroadcastReceiver

我的代码

alarmManager.setRepeating(AlarmManager.ELAPSED_REALTIME, 
                          SystemClock.elapsedRealtime(), 
                          DELAI_PLANNIF_TICK, 
                          pendingIntent);

1 个答案:

答案 0 :(得分:1)

当您关闭屏幕时,Android未处于睡眠模式。它正在那里,这个过程可能需要几秒钟。某些应用可能会获得WakeLock并在屏幕关闭时继续执行其任务(例如播放音频)。我的猜测是你的设备没有处于睡眠模式,你BroadcastReceiver的行为是预期的。如果您不使用PowerManager,那么您不必担心会阻止设备进入睡眠状态。如果您的应用需要在用户不与设备交互时停止执行,则最好处理事件屏幕。