Android 11-java.lang.IllegalStateException不允许启动服务意图:应用程序位于后台uid UidRecord{}

Android 11-java.lang.IllegalStateException不允许启动服务意图:应用程序位于后台uid UidRecord{},android,service,Android,Service,以下是Android 11上像素设备的崩溃报告 致命异常:java.lang.RuntimeException 无法启动活动组件信息{}:java.lang.IllegalStateException:不允许启动服务意图{}:应用程序位于后台uid UidRecord{} 这是我的代码,上面的异常指向这里 val stickyService = Intent(this, StickyService::class.java) startService(stickyService) M

以下是Android 11上像素设备的崩溃报告

致命异常:java.lang.RuntimeException 无法启动活动组件信息{}:java.lang.IllegalStateException:不允许启动服务意图{}:应用程序位于后台uid UidRecord{}

这是我的代码,上面的异常指向这里

   val stickyService = Intent(this, StickyService::class.java)
   startService(stickyService)
My StickyService类扩展了覆盖以下方法的服务类

    public class StickyService extends Service {

@Override
public int onStartCommand(Intent intent, int flags, int startId) {
    return START_STICKY;
}

@Nullable
@Override
public IBinder onBind(Intent intent) {
    return null;
}

@Override
public void onTaskRemoved(Intent rootIntent) {
    **Update value in preferences here**
}}

这只发生在Android 11设备上。Android 11中的谷歌服务实现是否有重大变化?

尝试使用前台服务,因为当应用程序被关闭时,后台服务是不允许的>Android 8

Android 11中的应用程序可见性发生了变化

如果applicationA正在使用applicationB中的服务,则需要在applicationA的AndroidManifest.xml中声明该服务:


...
所以android将使applicationB对applicationA可见


来源:

Android 11中对服务的限制与以前版本相同,要在应用程序位于后台时启动服务,服务应作为前台服务启动,应用程序应显示前台服务的通知,我们如何使用前台服务?需要改变什么?