onServiceConnected() ne l'appelle pas
J'ai un problème avec l'aide d'un service d'arrière-plan.
Je suis en utilisant le service de 2 activités.
La première activité démarre le Service
avec startService(intent)
et le lie avec bindService(intent, mConnection, Context.BIND_AUTO_CREATE);
Cela fonctionne parfaitement et je peux envoyer un Message
dans onServiceConnected()
.
La seconde activité ne lie que le Service
(puisque c'est déjà commencé), à nouveau en utilisant bindService(intent, mConnection, Context.BIND_AUTO_CREATE);
Maintenant, voici mon problème:
Dans la deuxième activité, j'ai un Button
qui devrait utiliser le service quand je le presse.
Cependant, la onServiceConnected()
n'est jamais appelé dans cette activité, donc je ne peux pas obtenir le classeur pour créer un Messenger
pour envoyer un Message
pour le serveur.
Personne ne sait quand onServiceConnected()
est appelé exactement, ou ce qu'il en est peut-être en attente pour?
Ou peut-être quelque chose d'autre pour résoudre ce problème?
EDIT: bindService
renvoie la valeur false, ce qui pourrait causer cela?
Merci d'avance
bindService
doit retourner false
si vous voulez onRebind
être appelée après la première liaison.OriginalL'auteur Leon van Noord | 2011-10-24
Vous devez vous connecter pour publier un commentaire.
Après un peu plus de recherche, j'ai découvert que c'est un problème connu dans Android.
La deuxième activité dont je parle est une activité qui est utilisée en tant que contenu à l'intérieur d'un
TabActivity
.Le moyen de résoudre ce problème a été d'appeler
bindService(...)
sur le contexte de l'application, plutôt que sur le contexte d'activité à l'aide degetApplicationContext().bindService(...)
Pourriez-vous m'expliquer pourquoi nous avons besoin de l'aide de getcontexteapplication().bindService pas bindService? bindService travaille dans mon activité, mais ne fonctionne pas dans mon autre activité (getcontexteapplication().bindService œuvres). C'est très étrange.
Merci beaucoup!! C'est exactement ce que j'ai été confronté et il fait beaucoup de sens d'utiliser le contexte de l'application plutôt que de contexte d'activité. Il a résolu mon problème! Merci man!!
OriginalL'auteur Leon van Noord
Vous devez ajouter:
<service android:name="package.path.to.your.service.class" android:enabled="true"></service>
dans le fichier manifeste Android.
est très très important d'ajouter le package + nom dans le manifeste package.path.to.your.service.class
OriginalL'auteur Erdinc Ay
Ajouter lier dans le manifeste..
MyAccessibilityService votre nom de service.
OriginalL'auteur febaisi
Il m'est arrivé tout à l'heure.
N'oubliez pas d'instancier votre classeur de la classe avant la onbind retour.
Stupide erreur, mais ça arrive. j'espère que cela va aider quelqu'un dans le futur.
OriginalL'auteur hepizoj
C'est ce qui a fonctionné pour moi
Au lieu de
J'ai utilisé
OriginalL'auteur Barrie Galitzky
J'ai été xmarian et avait le même problème et trouvé plus tard que je n'ai pas donné de nom propre à ce service . Si le nom du service devrait être donné le nom de l'attribut. Qui, je suppose, le xmarian compilateur fait la même chose à faire que de l'entrée dans Android XML.
OriginalL'auteur Gaurav Kanwar
Dans mon cas, c'était parce que j'avais oublié d'instancier le liant à l'intérieur du service et onBind retourné null.
J'ai eu ceci:
au lieu de cela:
OriginalL'auteur Apostolos Apostolidis