首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android AlarmManager elapsedTime引发错误

Android AlarmManager elapsedTime引发错误
EN

Stack Overflow用户
提问于 2016-06-23 12:14:12
回答 1查看 196关注 0票数 0

好吧,所以我设置了一个警报:

代码语言:javascript
复制
alarmManager.setExact(AlarmManager.ELAPSED_REALTIME_WAKEUP, triggerTime, pendingIntent);

哪里

代码语言:javascript
复制
long triggerTime = SystemClock.elapsedRealtime() + mynterval;

我把triggerTime存起来以备将来比较。

alarm ,有时在 triggerTime**!**之前开火

例如,我可以在日志中看到:

代码语言:javascript
复制
scanTime: 702672466
SystemClock.elapsedRealtime: 702672132

在这里可能出现什么增量错误-1秒,2-3秒或更多?

为什么会发生这种事?

EN

回答 1

Stack Overflow用户

发布于 2016-06-23 12:25:01

这是由于Android Doze模式

如果用户在一段时间内将设备断开并保持不动,则该设备将进入Doze模式。在Doze模式下,系统试图通过限制应用程序访问网络和CPU密集型服务来节省电池。

现在,警报是CPU密集型服务的情况.如图中所示,密集的工作是在所谓的维护窗口中共同完成的。

标准的AlarmManager警报(包括setExact()setWindow())被推迟到下一个维护窗口。如果您在Doze时需要设置点火警报,请使用setAndAllowWhileIdle()setExactAndAllowWhileIdle()setAlarmClock()设置的警报器继续正常工作-系统在警报开火前不久退出Doze。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37991324

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档