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

2 回答 2

2

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

如果你有一个正在运行的进程,你可以为和广播注册一个ACTION_DEVICE_IDLE_MODE_CHANGED接收ACTION_POWER_SAVE_MODE_CHANGED。前者应该对应Doze模式。

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

我不知道“解决方法打盹模式”是什么意思。您可以使用 上的...AndAllowWhileIdle()方法AlarmManager,尽管我的结果好坏参半。您可以使用 GCM(或现在的 FCM)。请参阅文档

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

您的部分唤醒锁定应在 Android 6.0(又名 M)的打盹模式下撤销。同样,在 Android 6.0 上,您不应在打盹模式下访问 Internet。

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

对于完全打盹模式,Android N 似乎并没有改变。对于 Android N 引入的部分打盹模式,您的部分唤醒锁定应该可以工作,尽管我不确定网络访问。

于 2016-06-09T12:00:32.587 回答
1
  1. 在以前的版本(Android M 和更小)中,我使用 Android 服务和部分唤醒锁在应用程序处于后台时下载和处理数据。当 Android N 进入打盹模式时,有没有办法在后台下载和处理数据?

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

对我有用的是使用前台服务,这是一个调用 startForeground() (1) 并显示不可关闭通知的服务,然后尊重部分唤醒锁定并且设备不会进入打盹模式。

(1) Android 8 开始前台服务的启动方式发生了变化Android O - 旧的启动前台服务还能用吗?

于 2018-01-18T12:08:45.057 回答