您好,所有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 27
和minSdkVersion 21
MyService
应该在 Oreo之前和 Oreo以后操作系统版本中在后台运行startForeground(...)
的使用范围答案 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