基本上我被卡住了,因为电池中的“改进”在Android 6.0+中添加了。我的应用程序从第三方服务器的Web服务获取数据:我的应用程序从11+在Android中每x分钟运行IntentService的正确方式包括打盹
方案
这里是我的方案支持API。由于它不是我的服务器,因此我无法控制何时添加或删除数据。数据的可用性各不相同。我希望能够触发一个IntentService来获取数据,例如在接下来的6个小时内每30/60分钟一次。通过这种方式,我可以在我的应用程序中的数据覆盖数据从服务器不可用时的情况。 当然,即使我的应用程序已关闭,也需要执行此操作。
你可能会说这对电池不友好,但它是高级用户的选择。
我做了什么至今
我一直在努力了很多与设置。虽然设置重复闹钟似乎是最简单和最方便的方式,但它只有在android 5.0之前才能可靠地工作。
从引入Doze
开始,根据文档,报警被推迟到maintenance window
,并且由于这些窗口在1-2-4等小时,它不适合我的需要。
我放弃了使用集repeating
,并试图使用一次Alarm
它在IntentService
执行中重新安排。从测试setExact
似乎没有运行良好,但后来尝试setExactAndAllowWhileIdle
这确实在正确的时刻开火,但如果在Doze
模式下,它没有网络连接访问,使其无用。
即使是这样,我不知道当setRepeating
或setExact
报警被延迟,但之前在下一个维护窗口中的设备被唤醒会发生什么......
基本上现在我卡住,用未机制工作,我不知道还有什么可以选择的应用程序支持的Android版本和需求。 LE:实际上,我并不知道在Android上设置背景作业的好方法,即使不包括Doze。我的意思是,我们确实有JobScheduler
这似乎是一件很好的事情......但是,嘿,它只在Android 21上可用,而不是向后支持......我的意思是,真的,有一个简单的事情要做,我已经等待迄今为止的几天。
谢谢,'setAlarmClock'似乎是唯一真正的选择,但它确实是一个超出范围。 – Alin