10
votes

Service non créé (ou connexion) après BINDService ()

J'ai ce service simple qui diffuse l'emplacement actuel de l'utilisateur. Je souhaite utiliser le mécanisme de liaison juste pour contrôler le cycle de vie du service, mais le service ne commence tout simplement pas.

Qu'est-ce que j'ai fait de mal? xxx

localbinder.java xxx

< Code> locativesservice.java xxx

androidmanifest.xml xxx

< Strong> Edit: corrigé grâce à la réponse de Nickt.

L'entrée manifeste n'a pas eu d'intention filtre ou le nom correct xxx

et l'intention que j'ai utilisée pour la liaison était comme celles que vous devez utiliser. lors du démarrage d'une activité. Le bon est: xxx


3 commentaires

Qu'est-ce que votre Ibinder Ibinder ONBIND (intention intention) méthode dans locativesservice.java ressemble?


@Jens j'ai édité la question à inclure la méthode OnBind ().


Hm. Et vous n'obtenez même pas le log.i ("Service de localisation", "Oncreate ()"); Connectez-vous votre logcat?


3 Réponses :


0
votes

J'ai eu mon activité implémente serviceconnection et lié comme ceci: xxx

porté ensuite les rappels pour oneserviceconnected () et onserviceisischeconné () dans mon activité


2 commentaires

Cela ne fait aucune différence.


Cela créera le service, c'est-à-dire appeler la méthode Oncreate () et elle se liera à votre activité, mais elle n'appellera pas l'ONSTARTCOMMAND () pour le service. Par conséquent, il ne commencera pas le service.



6
votes

L'ONSTARTCOMMAND ne sera exécuté que si le service est explicitement démarré, on dirait que vous voulez simplement vouloir y lier, c'est bien. Je ne vois pas que vous avez correctement configuré la connexion de service. Je pose mon programme Stub qui montre comment passer à un service et appeler une méthode dans le service via un classeur. Vous voudrez peut-être exécuter cela et voir la séquence des différents messages de journal. Vous devrez évidemment ajouter votre code à niveau large et votre code surcommode pour la rendre utile pour vous.

L'activité xxx

Le service xxx

le manifeste xxx

espère que cela aide


0 commentaires

0
votes

Lorsque vous appelez Bindservice Vous pouvez obtenir cette erreur:

ActivityManager Java.lang.classcastException: android.os.binderProxy ne peut pas être jetée à com.android.server.am.activitivitéRecord $ Token

Vérifiez la sortie de logcat.

Ceci est un bogue d'Android.

Pour résoudre le problème, utilisez gettaplicationContextex (). Bindservice (...)


0 commentaires