首页 > 解决方案 > Oreo 的后台执行限制

问题描述

嗨,所有的 Android 极客,

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

    minSdkVersion 21
    targetSdkVersion 27

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

我的疑问是;我应该将此startForeground(...)方法用于所有 android 版本吗?由于调用此方法将显示一条通知,因此我希望尽可能避免在奥利奥之前的版本中使用它。

那么,为了避免在奥利奥之前的设备中显示通知,我可以使用下面的代码片段吗?它会在奥利奥前后都在后台工作吗?

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

总结一下我的问题:

标签: androidandroid-serviceandroid-8.0-oreo

解决方案


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

是的,可以这样使用它。

Servicepre-oreo设备的后台运行,但如果用户杀死你的应用程序,它Service也会死掉,除非你也使用startForegroundpre-oreo。


推荐阅读