У меня возникает ситуация, когда я получаю эту ошибку, когда пытаюсь запустить службу из получателя, когда приложение закрыто или работает в фоновом режиме.
Но в документах четко указано:
Состояние вашего BroadcastReceiver (независимо от того, запущен он или нет) влияет на состояние его содержащего процесса, что, в свою очередь, может повлиять на его вероятностьбыть убитым системой.Например, когда процесс выполняет приемник (то есть в настоящее время выполняет код в своем методе onReceive ()), он считается процессом переднего плана .Система поддерживает выполнение процесса, за исключением случаев экстремального давления памяти.
Другими словами, когда приложение находится на переднем плане, поэтому оно может теоретически запустить службу.
Так что же такоепроблема здесь?
@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.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)