奥利奥背景执行限制

问题描述 投票:0回答:2

嗨,所有Android极客都在那里,

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

    minSdkVersion 21
    targetSdkVersion 27

我知道运行后台服务有限制,我可以通过使用startForeground(...)服务方法来克服它们。

我怀疑是;我应该为所有Android版本使用这个startForeground(...)方法吗?由于调用此方法将显示通知,我希望在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 OS后版本的后台运行
  • 是否可以限制startForeground(...)仅用于Oreo OS后版本
android android-service android-8.0-oreo
2个回答
1
投票

MyService应该在Oreo前和Oreo OS后版本的后台运行。是否可以限制仅在奥利奥操作系统版本后使用startForeground(...)?

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

Service将在pre-oreo设备的后台运行,但如果用户杀死你的应用程序,Service也会死亡,除非你使用startForeground进行pre-oreo。


0
投票

WorkManager适用于需要保证系统将运行它们的任务,即使应用程序退出启动前台在您的用例需要通知时也很好看,例如:备份,导航,位置更新。这样的操作开始前景完美契合。但还有其他情况,它不必显示通知。此外,应该始终在任务可延迟时使用。

WorkManager根据以下标准使用基础作业调度服务:使用JobScheduler for API 23+使用API​​ 14-22的自定义AlarmManager + BroadcastReceiver实现

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

© www.soinside.com 2019 - 2024. All rights reserved.