2

我想将我的应用程序更新到 Android 6,并使用警报器来调度我的后台服务。对于我的服务,重要的是在大约一个小时的窗口中被唤醒。它必须在那个窗口中醒来,所以一旦设备退出打盹,它就不会醒来,但我不在乎它什么时候在窗口中醒来。

我现在使用 .setWindow 来设置闹钟。当我希望它在打盹模式下工作时,我必须使用什么?没有 setWindowAndallowWhileIdle

据我所知,应该首选设置窗口而不是固定时间,尤其是在打盹模式下

4

1 回答 1

0

看起来 Android 终于决定对电池优化严格,因此很难绕过打盹模式。关键是你真的不应该在已经静止数小时的设备上做任何工作,而是等到维护窗口(工作将开始)或用户拿起他们的设备。

对于不精确或周期性的工作,请探索JobScheduler:这就是它的真正用途,并在调度方面为您提供多种选择[基于周期性、计量/非计量网络、收费等标准]。

他们根本不希望我们在打瞌睡时做任何工作。因此,据我所知,从现在开始,您“每小时一次”的用例只是最好的承诺。时间表和“希望”。话虽如此,Android N 有一个更“实用”(宽松)的打盹模式版本,维护窗口更快。你可以测试一下,我的感觉是它并不像听起来那么悲观。该政策是公平的:如果用户表现出与手机交互的意图,他们将触发工作。

参考 https://www.bignerdranch.com/blog/diving-into-doze-mode-for-developers/

于 2017-03-16T11:10:17.047 回答