2017-06-01 1 views
5

De onCreate() de mon activité,startService() lance java.lang.IllegalStateException

Je suis en train de lancer un service via le code suivant:

Intent intent = new Intent(); 
intent.setClassName(SERVICE_PKG_NAME, SERVICE_NAME); 
context.startService(intent); //context = MainActivity.this 

Cependant, je reçois exception suivante:

java.lang.IllegalStateException: Non autorisé à démarrer le service Intention (nom du service): l'application est en arrière-plan

Une idée de ce qui pourrait être une raison pour cela? Collé dessus pendant quelques heures maintenant.

+1

Sur quelle version d'Android travaillez-vous? En outre, pouvez-vous publier l'intégralité de la trace de la pile Java? – CommonsWare

+0

Fonctionne-t-il avec 'getApplicationContext(). StartService (intention)'? – tynn

+0

@tynn Aucun essai ... toujours la même erreur .. –

Répondre

1

Pour les cas impliquant besoin d'invoquer un service d'application en arrière-plan à partir d'une application au premier plan, nous pouvons suivre la séquence:

    premier
  • appel bindService()
  • après OnServiceConnected() en raison de lier appel
  • appelez StartService().
+0

Donc, cela doit être un service lié? –

+0

Alors, comment démarrer un service en réaction à une notification Firebase? –

+0

@DanielF Je pense qu'il est préférable d'utiliser JobScheduler pour cela.Vous pouvez spécifier le travail à démarrer, en fonction de certaines conditions comme Chargeur connecté, etc. https://developer.android.com/reference/android/app/job/JobScheduler.html –