2017-02-16 85 views
1

我想更新我的应用程序到Android 6,并使用alarmanager来管理我的后台服务。对我的服务来说,重要的是在一个大约一小时的长窗口内醒来。它必须在那个窗口醒来,所以一旦设备退出打瞌睡,但在窗口醒来时我不在乎。Android打盹报警窗口

我现在使用.setWindow设置我的闹钟。当我需要它与睡眠模式一起使用时,我需要使用什么?没有setWindowAndallowWhileIdle

而且据我所知,设置一个窗口,而不是一个固定的时间应特别优选的,而在休眠模式下

回答

0

它看起来像Android这样终于决定要严格有关电池优化,因此打盹模式很难bypass。总的来说,你真的不应该在一个静止几个小时的设备上做任何工作,而是等待一个维护窗口(工作将开始)或用户拿起他们的设备。

对于做不精确或定期的工作,请探索JobScheduler:这实际上是它的目的,并为您提供良好的多样性[根据周期性,计量/无计量网络,收费等标准]。

他们不希望我们在打瞌睡时做任何工作。因此,从我所能想到的情况来看,从现在开始,“每小时一次”的使用情况只能是最好的承诺。附表和'希望'。话虽如此,Android N有更多'practical'(宽松版)的休眠模式,其维护窗口更快。你可以测试,我的感觉是,它不像听起来那么阴沉。政策是公平的:如果用户显示与电话交互的意图,他们会触发工作。

裁判 https://www.bignerdranch.com/blog/diving-into-doze-mode-for-developers/

+0

我的应用程序的整点是当用户不与设备交互记录数据。所以我需要在打盹模式下唤醒设备。所以我认为它很糟糕,我必须设置一个确切的警报,以确保它在我的窗口中发生,而不是设置一个窗口,并给系统提供更多的可能性来批量报警。 – Ben

+0

是的,你是对的,设置确切的警报[无论如何不是确切的19后],而不是窗口看起来像你的方式。 “我的应用程序的重点是在用户没有与设备进行交互时记录数据” - 这正是android不再需要的。他们的观点是蓄电池漏电不应该发生在闲置的设备上。由于用户没有使用相同的。 –