无法在BroadcastReceiver中启动服务

时间:2019-03-12 09:00:22

标签: android android-broadcastreceiver

根据docs

  

前台流程是用户所需的流程   正在做。各种应用程序组件可能导致其   包含过程以不同方式被视为前台。 A   如果存在以下任何情况,则认为该过程处于前台   条件成立:

     

它正在与用户进行交互的屏幕顶部运行一个Activity(已调用其onResume()方法)。

     

>它具有当前正在运行的BroadcastReceiver(其   BroadcastReceiver.onReceive()方法正在执行)。

     

它具有一个服务,该服务当前正在其回调之一(Service.onCreate(),Service.onStart()或   Service.onDestroy())。

我使用API​​ 27,当我运行启动服务时,该过程处于前台,因此该服务应启动。但是相反,我得到了错误,我限制了Android Oreo 。文档不准确吗?

@Override
public void onReceive(Context context, Intent intent) {
    // assumes WordService is a registered service


    context.startService(new Intent(context, HelloService.class));

}


E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.example.testapp, PID: 26026
    java.lang.RuntimeException: Unable to start receiver com.example.paourissi.testapp.MyReceiver: java.lang.IllegalStateException: Not allowed to start service Intent { cmp=com.example.testapp/.HelloService }: app is in background uid UidRecord{bee03a7 u0a82 RCVR bg:+1m19s133ms idle change:uncached procs:1 seq(0,0,0)}
        at android.app.ActivityThread.handleReceiver(ActivityThread.java:3194)
        at android.app.ActivityThread.-wrap17(Unknown Source:0)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1672)
        at android.os.Handler.dispatchMessage(Handler.java:106)

0 个答案:

没有答案