安卓N Doze模式-如何保持后台下载和处理


  1. 在doze模式(在doze第一/第二级,在维护窗口的开始/结束)上是否有回调
  2. 有没有一种方法可以解决不依赖于用户批准的Doze模式
  3. 在以前的版本(Android M和更小的版本)中,当应用程序处于后台时,我使用Android服务和部分唤醒锁定来下载和处理数据。当安卓N进入Doze模式时,有没有办法在后台下载和处理数据

在doze模式(在doze第一/第二级,在维护窗口的开始/结束)上是否有回调?

如果您有一个正在运行的进程,您可以为ACTION_DEVICE_IDLE_MODE_CHANGEDACTION_POWER_SAVE_MODE_CHANGED广播注册一个接收器。前者应与Doze模式相对应。

是否有一种方法可以解决不依赖于用户批准的Doze模式?

我不知道"变通Doze模式"是什么意思。您可以在AlarmManager上使用...AndAllowWhileIdle()方法,尽管我的结果参差不齐。你可以使用GCM(或者现在的FCM)。请参阅文档。

在以前的版本(Android M和更小的版本)中,当应用程序处于后台时,我使用Android服务和部分唤醒锁定来下载和处理数据。

您的部分唤醒锁应该在Android 6.0(又名M)上的Doze模式下被撤销。同样,在Android 6.0上,你不应该在Doze模式下访问互联网。

当Android N进入Doze模式时,有没有办法在后台下载和处理数据?

对于完整的Doze模式,Android N似乎不会改变事情。对于Android N引入的部分Doze模式,您的部分唤醒锁应该可以工作,尽管我不确定网络访问。

  1. 在以前的版本(Android M及以下版本)中,我使用Android服务和部分唤醒锁定来下载和处理数据,而应用程序处于后台。有没有下载和处理的方法Android N进入Doze模式时后台的数据

当设备进入Doze模式时,大多数功能都会因为CPU停止而停止,那么方法应该是避免进入Doze方式:

对我来说,有效的方法是使用前台服务,这是一个调用startForeground()(1)并显示不可驳回通知的服务,然后部分唤醒锁定得到尊重,设备不会进入Doze模式。

(1)从Android 8开始,启动前台服务的方法已经改变了Android O-旧的启动前台服务仍然有效

最新更新