我在我的服务中使用警报管理器每隔15秒设置一次非唤醒警报来执行某项任务。我不想唤醒手机因为任务不是时间关键,所以我使用ELAPSED_REALTIME标志来设置闹钟。这是代码:
alarm.setRepeating(AlarmManager.ELAPSED_REALTIME, SystemClock.elapsedRealtime(), 15 * 1000, intentRecurringChecks);
我在日志中注意到的是,任务每15秒执行一次。这是否意味着即使手机的屏幕已关闭半小时,手机也会保持清醒状态?有没有办法可以确定我的应用程序不是唤醒手机的人?
我搜索过这个主题,但找不到合适的答案。
感谢您的帮助。
答案 0 :(得分:0)
首先,您不应该使用AlarmManager进行此类超时。这在documentation中明确提到(阅读粗体部分)。在您的情况下,最好使用基于Handler
的计时器。这是一个例子:Repeat a task with a time delay?。
其次,当设备通过USB连接时,它不会进入深度睡眠模式。您应该断开设备等一两分钟。将其重新连接并分析日志。