什么是android设备的asleep定义?

Jan*_*usz 10 android alarmmanager

我正在使用

alarmManager.setInexactRepeating(AlarmManager.ELAPSED_REALTIME, 0, DURATION, broadcast);
Run Code Online (Sandbox Code Playgroud)

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

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

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

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

Mik*_* dg 8

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

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


Krz*_*lny 7

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

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

你究竟是什么意思"如何验证命令不再执行的时间"?什么命令?

来自JavaDoc:

设备处于休眠状态时会保留已注册的警报(如果设备在此期间关闭,则可以选择将设备唤醒),但如果设备关闭并重新启动,则会清除设备.

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

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

*** set_screen_state 0 来自"power"标签

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