Android 安卓:让重复的背景任务安卓奥利奥做好准备的最好方法是什么?

Android 安卓:让重复的背景任务安卓奥利奥做好准备的最好方法是什么?,android,android-8.0-oreo,Android,Android 8.0 Oreo,我听说后台服务在android Oreo上不会那么免费。 我有点困惑我该如何重写我的代码。 我和android一起工作了一个月左右,所以请尝试 回答尽可能简单 我有一个在启动时调用的服务,它位于main活动的onCreate()中。 在服务的onstart命令中调用处理程序。 此处理程序将每隔半分钟调用一个函数。 此函数执行一些api请求,并在应用某些条件时推送通知 让这段代码在android O+上运行的最佳方式是什么 我考虑使用前台服务,并显示一个无用的正在进行的通知,用户可以 看不见,但这

我听说后台服务在android Oreo上不会那么免费。 我有点困惑我该如何重写我的代码。 我和android一起工作了一个月左右,所以请尝试 回答尽可能简单

我有一个在启动时调用的服务,它位于main活动的
onCreate()
中。 在服务的
onstart命令中
调用
处理程序
。 此处理程序将每隔半分钟调用一个函数。 此函数执行一些api请求,并在应用某些条件时推送通知

让这段代码在android O+上运行的最佳方式是什么

我考虑使用前台服务,并显示一个无用的
正在进行的
通知,用户可以
看不见,但这个想法听起来并不好

此处理程序将每隔半分钟对其本身进行一次postDelay()并调用一个函数

这将无法在Android 6.0+上可靠工作,这要归功于打瞌睡模式和应用程序待机。尤其是在任何地方工作,几乎如此频繁都会对电池有害,因此谷歌将竭尽全力防止这种行为

让这段代码在android O+上运行的最佳方式是什么

最好的办法是彻底摆脱它。使用作业调度器
,减少定期工作的频率(例如,每15分钟一次)

使用前台服务将使您的应用程序在Android 8.0+上的表现与在Android 6.0+上的表现相同(即,仍然不可靠,但至少工作一分钟以上)

我考虑过使用前台服务并显示一个无用的持续通知,用户可以使其不可见,但这种想法听起来并不好


发出有用的通知,允许用户控制服务的行为。

使用GcmNetworkManager。您可以设置间隔更频繁的定期任务。因为它在api级别上使用不同的结构,所以您很可能不会遇到oreo的问题

谢谢你的回答!我发现安卓N不允许定期作业,周期<15分钟,这会影响安卓O还是他们再次让它更“友好”?@Max:这方面没有变化。频繁的周期性工作是电池耗电的主要来源,这也是谷歌不赞成的原因。