问题描述
我想将我的应用更新到Android 6,我使用alarmanager来提供我的后台服务。 对于我的服务,重要的是在大约一小时的长时间窗口中醒来。 它必须在那个窗口醒来,所以不是一旦设备退出打瞌睡,但我不在乎它何时在窗口醒来。
我现在用.setWindow设置闹钟。 当我希望它与打盹模式一起使用时,我必须使用什么? 没有setWindowAndallowWhileIdle
据我所知,设置窗口而不是固定时间应该是首选,尤其是在打盹模式下
1楼
看起来Android最终决定对电池优化严格,因此很难打盹模式。 重点是你真的不应该在已经静止几个小时的设备上做任何工作,而是等到维护窗口(工作将开始)或用户拿起他们的设备。
对于做不精确或定期工作,请探索 :它实际上是它的构建方式,并为您提供良好的多样性[基于周期性,计量/未计量网络,充电等标准]。
在打瞌睡时,他们不希望我们做任何工作。 因此,从我能想到的情况来看,“每小时一次”的用例只是从现在起最好的承诺。 安排和'希望'。 话虽如此,Android N有一个更“ ”(宽松)的打盹模式版本,维护窗口更快。 你可以测试,我的感觉是它并不像它听起来那么阴沉。 该政策是公平的:如果用户显示与电话交互的意图,他们将触发工作。
参考