android - "Doze"到底做了什么?应用程序是否应该因此更改其代码?

标签 android android-6.0-marshmallow android-doze

背景

Android 6 引入了一种称为“Doze”的内置机制,以便在设备休眠时更好地处理电池。

问题

问题是,我不明白它到底是如何工作的,以及应用程序应该如何改变以处理这种新机制(如果有的话)。

显然,这取决于代码中的内容,但我应该寻找什么?

我发现了什么

我发现有 2 个网页在谈论这个:

但他们主要谈论警报:

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 会因此而有所不同吗?需要进行哪些更改:

  1. 警报

  2. 后台/前台服务

  3. 唤醒锁

  4. 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/

相关文章:

Android 应用程序包 -> apk 不包含必需的 native 库

java - 在 Eclipse 中添加编辑文本时出错

android - 如何在使用 Room 时立即获取查询结果?

java - Android:使用 LeadingMarginSpan 在 TextView 中显示项目符号列表?

java - 将 AndroidKeyStoreRSAPrivateKey 转换为 RSAPrivateKey 时崩溃

android - 打开应用权限设置

android - 如何在 Android 上测试打瞌睡模式?

android - 获取棉花糖中的当前位置 0,其中低于 23 API 它使用融合位置给出确切的当前位置

android - 打盹模式 - 前台服务是否继续运行?

android - 在打瞌睡模式下启动时 Activity 保持黑色