Oreo的背景执行限制

时间:2018-09-05 09:46:52

标签: android android-service android-8.0-oreo

您好,所有Android爱好者,

我正在开发针对Android Oreo(O)的Android应用程序。

    minSdkVersion 21
    targetSdkVersion 27

我知道运行后台服务存在一些限制,我可以使用startForeground(...)服务方法来克服这些限制。

我的疑问是; 我应该在所有Android版本中都使用此startForeground(...)方法吗?由于调用此方法将显示通知,因此我希望在Oreo之前的版本中避免它。

因此,为避免在Oreo之前的设备中显示通知,我可以使用下面的代码段吗?它可以在Oreo之前和之后的后台运行吗?

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O /* 26 */) {
        // Make the service as foreground service by calling startForeground method
    } else {
        // Nothing to do
    }

总结我的问题:

  • targetSdkVersion 27minSdkVersion 21
  • MyService应该在 Oreo之前 Oreo以后操作系统版本中在后台运行
  • 可以仅在 Oreo以后的版本操作系统版本中限制startForeground(...)的使用范围

2 个答案:

答案 0 :(得分:1)

  

MyService应该在Oreo之前和之后的OS版本中在后台运行。可以仅在Oreo OS后版本中限制startForeground(...)的使用吗?

是的,可以像这样使用它。

Service将在pre-oreo设备中在后台运行,但是如果用户终止了您的应用,除非您使用Service -也是。

答案 1 :(得分:0)

WorkManager适用于需要保证即使应用程序退出系统也能运行它们的任务 当您的用例需要通知时,启动前景看起来也很好,例如:备份,导航,位置更新。这样的操作启动前景非常合适。 但是在其他情况下,它不必显示通知。 另外,在任务可延期时应始终使用它。

  

WorkManager在可用时使用基础的作业调度服务   基于以下条件:   将JobScheduler用于API 23+使用自定义AlarmManager +   API 14-22的BroadcastReceiver实现

更多链接 https://developer.android.com/reference/androidx/work/WorkManager?hl=en