背景
Android 6 引入了一种称为“Doze”的内置机制,以便在设备休眠时更好地处理电池。
问题
问题是,我不明白它到底是如何工作的,以及应用程序应该如何改变以处理这种新机制(如果有的话)。
显然,这取决于代码中的内容,但我应该寻找什么?
我发现了什么
我发现有 2 个网页在谈论这个:
- https://plus.google.com/+AndroidDevelopers/posts/94jCkmG4jff
- http://developer.android.com/training/monitoring-device-state/doze-standby.html
但他们主要谈论警报:
To help with scheduling alarms, Android 6.0 (API level 23) introduces two new AlarmManager methods: setAndAllowWhileIdle() and setExactAndAllowWhileIdle(). With these methods, you can set alarms that will fire even if the device is in Doze.
问题
应用开发者应该怎样做才能处理这个新机制?调度 API 会因此而有所不同吗?需要进行哪些更改:
警报
后台/前台服务
唤醒锁
JobScheduler 和 GcmTaskService
在这件事上是否需要做一些调整来处理Android 6及以上版本?
最佳答案
最重要的行为变化之一是由于打瞌睡而在空闲模式下缺乏网络连接。但是,行为有很多变化——包括唤醒锁和 JobScheduler 作业。
开发人员文档非常清楚什么在打瞌睡时不起作用: http://developer.android.com/training/monitoring-device-state/doze-standby.html#restrictions
如果您正在寻找细节,请随时查看我写的关于我对打瞌睡和空闲模式行为的一些观察的要点: https://gist.github.com/ccpmark/430d4ddf3a46a02672c1
关于android - "Doze"到底做了什么?应用程序是否应该因此更改其代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33087589/