J'ai un service qui est lié au contexte de l'application de cette manière :
getApplicationContext().bindService(
new Intent(this, ServiceUI.class),
serviceConnection,
Context.BIND_AUTO_CREATE
);
protected void onDestroy() {
super.onDestroy();
getApplicationContext().unbindService(serviceConnection);
}
Pour une raison quelconque, parfois le contexte de l'application ne se lie pas correctement (je ne peux pas corriger cette partie), cependant dans onDestroy() je fais unbindservice
qui génère une erreur
java.lang.IllegalArgumentException: Service not registered: tools.cdevice.Devices$mainServiceConnection.
Ma question est : Y a-t-il un moyen d'appeler unbindservice
en toute sécurité ou de vérifier s'il est déjà lié à un service avant de le délier ?
Merci d'avance.
0 votes
Vérifiez stackoverflow.com/questions/1916253/…
0 votes
J'ai déjà parcouru cela auparavant, mais cela ne résout pas mon problème, disons simplement que j'appelle UnBindService sans appeler BindService(), comment gérez-vous l'erreur sans que l'application FC?
0 votes
Pouvez-vous simplement attraper l'exception et continuer ?
1 votes
@La réponse de Yury est la bonne réponse.
0 votes
C'est parce que vous liez le service avec getApplicationContext() puis le déliez avec le contexte de l'activité en cours. C'est comme donner une pièce à X et la demander à Y. Cela vous lancera une IllegalArgumentException :-) J'espère que c'est la réponse à la question, utilisez le même contexte lors de la liaison et du déliement :-)