答案 0 :(得分:2)
打盹模式是否有回调(在Doze第一/第二级,维护窗口的开始/结束时)?
如果您有正在运行的流程,则可以为the ACTION_DEVICE_IDLE_MODE_CHANGED
和ACTION_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)
- 在之前的版本(Android M及更小版本)中,我使用了Android Service和部分唤醒锁来下载和处理数据 申请是在后台。有没有办法下载和处理 Android N进入打盹模式时后台的数据?
醇>
当设备进入打盹模式时,大多数功能因CPU停止而停止,那么应该避免进入打盹模式:
对我有用的是使用前台服务,即调用startForeground()(1)的服务并显示不可忽略的通知,然后部分唤醒锁被尊重,设备不会#39 ;进入打盹模式。
(1)从Android 8开始,启动前台服务的方法已更改Android O - Old start foreground service still working?