Android 什么是;“打瞌睡”;真的吗?应用程序是否应该因此而更改代码? 背景

Android 什么是;“打瞌睡”;真的吗?应用程序是否应该因此而更改代码? 背景,android,android-6.0-marshmallow,android-doze,Android,Android 6.0 Marshmallow,Android Doze,安卓6引入了一种称为“打瞌睡”的内置机制,以便在设备睡眠时更好地处理电池 问题 问题是,我不知道它到底是如何工作的,应用程序应该如何改变来处理这个新机制,如果有的话 显然,这取决于代码中的内容,但是我应该寻找什么呢 我发现了什么 我发现有两个网页在谈论这一点: 但他们大多谈论警报: 为了帮助安排警报,Android 6.0(API级别23)引入了 两个新的AlarmManager方法:setAndAllowHileId()和 setExactAndAllowHileId()。使用这些方法

安卓6引入了一种称为“打瞌睡”的内置机制,以便在设备睡眠时更好地处理电池

问题 问题是,我不知道它到底是如何工作的,应用程序应该如何改变来处理这个新机制,如果有的话

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

我发现了什么 我发现有两个网页在谈论这一点:

但他们大多谈论警报:

为了帮助安排警报,Android 6.0(API级别23)引入了 两个新的AlarmManager方法:setAndAllowHileId()和 setExactAndAllowHileId()。使用这些方法,您可以设置警报 即使设备处于休眠状态,也会触发

问题 应用程序开发人员应该如何处理这种新机制?调度API是否会因此而工作不同?以下方面需要进行哪些更改:

  • 警报

  • 后台/前台服务

  • 韦克洛克

  • JobScheduler和GcmTaskService


  • 在这个问题上,是否需要做任何调整来处理Android 6及以上版本

    最重要的行为变化之一是由于打瞌睡而导致空闲模式下缺少网络连接。但是,行为有很多变化,包括wakelocks和JobScheduler作业

    开发者文档非常清楚在打瞌睡时什么是不起作用的:

    如果您想了解具体情况,请随意查看我写的关于我对瞌睡和空闲模式行为的一些观察的要点:

    白名单是否有可能对网络有所帮助?据我所知,白名单仅适用于应用程序待机模式,不适用于打瞌睡。我不知道。他们在那里谈到了警报,但文件说“被列入白名单的应用程序可以在打瞌睡和应用程序待机期间使用网络并持有部分唤醒锁”。资料来源:对不起,我弄错了。似乎白名单可以让你避免打瞌睡。但只适用于特定的事情,比如部分唤醒,对吗?