什么是android设备的asleep定义?

时间:2011-02-25 13:52:17

标签: android alarmmanager

我正在使用

alarmManager.setInexactRepeating(AlarmManager.ELAPSED_REALTIME, 0, DURATION, broadcast);

安排仅在设备未睡眠时才应执行的重复任务。据我了解AlarmManager上的API,一旦设备从睡眠状态唤醒,就会调用intent。

现在Android设备什么时候睡着了?为了测试,我将持续时间设置为两分钟,并将设备连接到我的机器。现在我正在看logcat,每隔两分钟它就会吐出我的调试信息。

我一直认为停用的屏幕意味着设备开始睡眠。 或者我正在查看调试输出,以防止设备休眠? 我也断开了USB连接并在半小时后看了一下日志,即使显示器黑暗超过15分钟,我也可以看到我的定时器代码的调用。

如何验证命令不再执行的时间以及AlarmManager文档中的睡眠是什么?有没有办法在设备开始睡眠时从logcat输出中看到什么?

2 个答案:

答案 0 :(得分:8)

关闭的屏幕,不一定表示正在睡眠的设备。应用程序可以请求唤醒锁定,以便在屏幕关闭时使设备保持唤醒状态。如果另一个应用程序有一个不使用不精确重复的计时器,那么设备也将为此唤醒。

根据您设备上的Android版本,您可以在“设置”中找到清醒时间图表 - >关于手机 - >电池使用 - >然后点击顶部的图表。 有关唤醒锁的更多信息,请访问http://developer.android.com/reference/android/os/PowerManager.html

答案 1 :(得分:7)

当没有运行的应用程序阻止其休眠时,设备处于睡眠状态。所以: 1.屏幕关闭(当它在那里时总是有一些正在运行的应用程序,例如Launcher) 2.没有正在运行的服务(例如音乐,下载) - 没有CPU锁定。

AlarmManager唤醒设备休眠,运行要运行的内容。这很重要,例如结束从报警中在广播接收器中创建的服务,让设备再次入睡。如果你在后台做得更长更重要,你应该为你的应用获得CPU锁定,以防止它被Android操作系统杀死。

你究竟是什么意思“我怎样才能验证命令不再执行的时间”?什么命令?

来自JavaDoc:

  

保留已注册的警报   设备是睡着了(可以   如果它们可选择唤醒设备   在那段时间里去,但是会   如果关闭则清除   重新启动。

因此操作系统会保留所有警报,设备可以通过睡眠时发出的警报唤醒。重启后会丢弃警报(您应该将它们保留在数据库中并在重启后恢复它们)。

“当设备开始睡眠时,有没有办法从logcat输出中看到?” 据我所知,没有,我只能在屏幕熄灭时看到这样的事情:

来自“power”标签的

*** set_screen_state 0

恕我直言,你不应该打扰睡眠模式,只需要通过处理屏幕关闭和意图(Intent.ACTION_SCREEN_OFF)使你的应用程序成为“优秀的Android公民”,尽快完成服务,释放资源(网络,GPS,CPU)尽快使用不准确的警报,下载管理器以及操作系统带来的所有优秀员工。我相信Android可以透明地处理CPU睡眠。