alarmManager.setInexactRepeating(AlarmManager.ELAPSED_REALTIME,DURATION,broadcast);
要安排一个重复的任务,只有当设备没有睡觉时才应执行.据了解,AlarmManager上的API将在设备从睡眠中唤醒之后被调用.
现在Android设备什么时候睡着了?对于测试,我将持续时间设置为两分钟,并将设备连接到我的机器.现在我正在看logcat,每两分钟就会吐出我的调试信息.
我一直认为停用屏幕意味着设备开始睡眠.
或者我看看调试输出是否阻止设备睡眠?
我也断开了USB连接,半小时后查看了日志,即使显示屏黑暗了15分钟,我也可以看到我的定时器代码.
如何验证从什么时候命令不再被执行,AlarmManager文档中有什么睡眠?当设备开始睡眠时,有没有办法从logcat输出中查看?
解决方法
1.屏幕已关闭(当它在那里总是有一些正在运行的应用程序,例如,Lahuncher)
2.没有正在运行的服务(例如音乐,下载) – 没有cpu锁.
AlarmManager从睡眠状态唤醒设备,运行什么运行.这是关键的结束在广播接收机中从闹钟创建的服务,让设备再次入睡.如果您在后台长时间重要,您应该获取应用程序的cpu锁,以防止其被Android操作系统杀死.
“我怎样才能从哪个时间验证命令不再执行”呢?什么命令?
来自JavaDoc:
Registered alarms are retained while
the device is asleep (and can
optionally wake the device up if they
go off during that time),but will be
cleared if it is turned off and
rebooted.
所以操作系统保持所有报警,设备可以被睡觉时所发生的报警唤醒.重新启动后,警报将被丢弃(您应该将它们保存在数据库中,然后重新启动后恢复).
“当设备开始睡觉时,有没有办法从logcat输出中看到?”
我知道没有,我只能看到这样的屏幕熄灭时:
*** set_screen_state 0来自“power”标签
IMHO你不应该打扰睡眠模式,只要通过处理屏幕关闭和Intent(Intent.ACTION_SCREEN_OFF),如果需要,完成服务,尽快释放资源(网络,GPS,cpu),使您的应用程序“优秀的Android公民”,使用不正确的警报,下载管理员以及操作系统带来的所有好的员工.我相信Android会透明地处理cpu睡眠.