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