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

时间:2016-06-09 11:46:38

标签: android android-doze

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

2 个答案:

答案 0 :(得分:2)

  

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

如果您有正在运行的流程,则可以为the ACTION_DEVICE_IDLE_MODE_CHANGEDACTION_POWER_SAVE_MODE_CHANGED broadcasts注册接收方。前者应该与Doze模式相对应。

  

有没有办法解决不依赖于用户批准的打盹模式?

我不知道"解决方法打盹模式"手段。您可以在...AndAllowWhileIdle()上使用AlarmManager方法,但结果不一致。您可以使用GCM(或FCM)。请参阅the documentation

  

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

应在Android 6.0(a.k.a.,M)的Doze模式下撤销部分唤醒锁定。同样,您不应该在Android 6.0上以打盹模式访问Internet。

  

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

对于完整的打盹模式,Android N似乎没有改变。对于Android N引入的部分打盹模式,部分唤醒锁应该有效,但我不确定网络访问。

答案 1 :(得分:1)

  
      
  1. 在之前的版本(Android M及更小版本)中,我使用了Android Service和部分唤醒锁来下载和处理数据   申请是在后台。有没有办法下载和处理   Android N进入打盹模式时后台的数据?
  2.   

当设备进入打盹模式时,大多数功能因CPU停止而停止,那么应该避免进入打盹模式:

对我有用的是使用前台服务,即调用startForeground()(1)的服务并显示不可忽略的通知,然后部分唤醒锁被尊重,设备不会#39 ;进入打盹模式。

(1)从Android 8开始,启动前台服务的方法已更改Android O - Old start foreground service still working?