Android:重复的后台任务Android Oreo准备好的最佳方法是什么?

时间:2017-08-25 17:12:03

标签: android android-8.0-oreo

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

我有一个名为On Boot的服务和我的MainActivity的onCreate()。 在服务的onStartCommand中,它正在调用Handler。 这个处理程序每​​隔半分钟就会postDelay()一次并调用一个函数。 此函数执行一些api请求,并在应用某些条件时发送通知。

让这段代码在android O +上工作的最佳方法是什么?

我考虑使用Foreground Service并显示无用的ongoing通知,用户可以制作 看不见但这个想法听起来不太好。

2 个答案:

答案 0 :(得分:1)

  

这个处理程序将每半分钟postDelay()并调用一个函数

这在Android 6.0+上无法可靠运行,由Doze模式和app待机提供。特别是在几乎任何地方工作都会对电池造成不利影响,因此Google会竭尽全力防止这种行为。

  

让这段代码在android O +上工作的最佳方法是什么?

最好的办法是完全摆脱它。使用JobScheduler并减少定期工作(例如,每15分钟一次)。

使用前台服务将使您的应用在Android 8.0及Android 6.0+上的运行方式(即,仍然不可靠,但至少工作超过一分钟)。

  

我考虑过使用Foreground Service并显示无用的持续通知,用户可以隐身但这个想法听起来不太好。

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

答案 1 :(得分:0)

使用GcmNetworkManager。您可以使用更频繁的间隔设置定期任务。由于它使用了与api级别不同的结构,因此你可能对oreo没有任何问题。