【发布时间】:2016-06-09 11:46:38
【问题描述】:
- 打盹模式是否有回调(在打盹第一/第二级,在维护窗口的开始/结束时)?
- 有没有办法解决不依赖于用户批准的打盹模式?
- 在以前的版本(Android M 和更小)中,我使用 Android 服务和部分唤醒锁在应用程序处于后台时下载和处理数据。当 Android N 进入打盹模式时,有没有办法在后台下载和处理数据?
【问题讨论】:
标签: android android-doze
【问题讨论】:
标签: android android-doze
打盹模式是否有回调(在打盹第一/第二级,在维护窗口的开始/结束时)?
如果你有一个正在运行的进程,你可以为the ACTION_DEVICE_IDLE_MODE_CHANGED和ACTION_POWER_SAVE_MODE_CHANGED broadcasts注册一个receiver。前者应该对应Doze模式。
有没有办法解决不依赖于用户批准的打盹模式?
我不知道“解决方法打盹模式”是什么意思。您可以在AlarmManager 上使用...AndAllowWhileIdle() 方法,尽管我的结果好坏参半。您可以使用 GCM(或现在的 FCM)。见the documentation。
在以前的版本(Android M 和更小版本)中,我使用 Android 服务和部分唤醒锁在应用程序处于后台时下载和处理数据。
您的部分唤醒锁定应在 Android 6.0(又名 M)的打盹模式下撤销。同样,在 Android 6.0 上,您不应在打盹模式下访问 Internet。
当 Android N 进入打盹模式时,有没有办法在后台下载和处理数据?
对于完全打盹模式,Android N 似乎没有改变。对于 Android N 引入的部分打盹模式,您的部分唤醒锁定应该可以工作,尽管我不确定网络访问。
【讨论】:
- 在以前的版本(Android M 和更小)中,我使用 Android 服务和部分唤醒锁来下载和处理数据,而 应用程序在后台。有没有办法下载和处理 Android N 进入打盹模式时后台的数据?
当设备进入打盹模式时,大多数功能停止实际上是因为CPU停止了,那么方法应该是避免进入打盹模式:
对我有用的是使用前台服务,即调用 startForeground() (1) 并显示不可关闭通知的服务,然后尊重部分唤醒锁定并且设备不会进入打盹模式.
(1) 从 Android 8 开始,启动前台服务的方法发生了变化Android O - Old start foreground service still working?
【讨论】: