2010-05-27 4 views
0

après avoir appelé:Impossible de lier au service à distance

result=bindService(new Intent(IUdpListenerService.class.getName()), 
      serviceConnection, Context.BIND_AUTO_CREATE); 

byt débogueur: résultat retour 'true'

le onServiceConnected n'est pas appelé.

* mention mal que le service à distance est installé dans apk diffrent et est démarré par la commande startService (..)

Okie .. ce qui est nouveau chose que je viens de découvrir: onServiceConnected est d'être triggerd, mais cela prend du temps, alors qu'arrive-t-il ici ... que lorsque j'utilise l'instance de mon interface - c'est toujours la valeur de remine null, avant que onServiceConnected ne puisse être déclenché ... est-ce possible? -

+0

pourquoi ajoutez-vous getName() après la classe? – RoflcoptrException

+0

Honnêtement .. Je ne sais pas .. Je l'ai pris d'un exemple. comment l'ajusterais-tu? – Moshik

+0

Utilisez 'adb logcat', DDMS ou la perspective DDMS dans Eclipse et recherchez les avertissements. Vous recevrez généralement un avertissement si Android n'a pas pu identifier votre service pour s'y lier, par exemple. – CommonsWare

Répondre

3

Le service doit avoir un <intent-filter> avec une action: Vous pouvez ensuite utiliser le formulaire d'action d'un Intent à lier à elle:

new Intent("com.commonsware.android.advservice.IScript") 

ou, si votre client arrive à avoir une classe ou d'une interface nommée IScript dans le package com.commonsware.android.advservice:

new Intent(IScript.getName()); 
+0

si le résultat renvoie vrai (plz vérifier ma modification), n'est-ce pas un signe que le succès lié? – Moshik

+0

Okie .. c'est une nouvelle chose que je viens de découvrir: maintenant onServiceConnected est en train d'être triggerd, mais ça prend du temps, alors ça se passe ici .. que l'instance de mon interface - quand je l'utilise, c'est encore remine null, avant onServiceConnected manage être déclencheur .. est-ce possible? – Moshik

+0

Oui, ServiceConnection est null jusqu'à ce que onServiceConnected soit appelé (comme son nom l'indique). –

1

Le constructeur Intent que vous utilisez prend un Action, pas un nom de classe. Pour démarrer un service donné, utilisez new Intent(<package context, e.g. this>, IUdpListenerService.class) à la place.

Mise à jour: pour démarrer un service ou une activité dans un autre paquet, utilisez setComponent:

new Intent().setComponent(new ComponentName("com.remote", "com.remote.IUdpListenerService")); 

(voir this question pour plus de détails)

+0

Si mon service distant est en une autre application appelée remote, et sous le package com.remote, comment l'ajuster? coz je l'ai essayé, et il n'a pas non plus travaillé – Moshik

+0

Vous voulez démarrer un service dans un autre paquet? Voir la réponse à cette question: http://stackoverflow.com/questions/2209513/how-to-start-activity-in-another-application –

Questions connexes