目录

Android8.0及以上Service background start error

目录

 Caused by: java.lang.IllegalStateException: Not allowed to start service Intent { cmp=xxxxxService }: app is in background uid UidRecord{4b037e1 u0a194 SVC  idle change:idle|uncached procs:1 seq(0,0,0)}
    at android.app.ContextImpl.startServiceCommon(ContextImpl.java:1521)
    at android.app.ContextImpl.startService(ContextImpl.java:1477)
    at android.content.ContextWrapper.startService(ContextWrapper.java:650)
  • 原因:在应用程序启动时,应用程序启动应该执行某些网络任务的服务。在针对API级别26后,我的应用程序无法在后台启动Android 8.0上的服务。

  • 解决

      if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
              context.startForegroundService(new Intent(context, ServedService.class));
          } else {
              context.startService(new Intent(context, ServedService.class));
          }
    
          //根据需要可以添加一个前置广播
      @Override
      public void onCreate() {
          super.onCreate();
          startForeground(1,new Notification());
      }