2010-11-10 17 views
1

J'essayais de surcharger la fonction toString() d'un service. J'ai un service et j'utilise une autre application pour accéder à toString(). Cependant la sortie n'est pas comme prévu, je soupçonne que la surcharge de toString() a échoué! Quelqu'un peut-il aider? Mercicomment remplacer la méthode toString() dans le service android?

///////////////toString Function in the service !/////////////// 

public String toString() { 
    return "Hello World"; 
} 

//////////how I am calling the overridden function !//////////////////// 

ActivityManager am = (ActivityManager)this.getSystemService(ACTIVITY_SERVICE); 

List<ActivityManager.RunningServiceInfo> rs = am.getRunningServices(50); 

for (int i=0; i<rs.size(); i++) { 
    ActivityManager.RunningServiceInfo rsi = rs.get(i); 
    Log.i("Hello",rsi.getClass().toString()); 
    Log.i("Service", "Process " + rsi.process + " with component " + 
      rsi.service.getClassName()); 
} 
+0

Pouvez-vous poster le code que vous avez écrit ... que Je serai utile. et btw, c'est «Overriding» pas «surcharge», ses 2 choses différentes. – st0le

+0

merci beaucoup de souligner l'erreur. Je joins le code que j'ai utilisé pour toString() et la façon dont je l'appelle. :) – Ahsan

Répondre

2

Vous prévoyez d'avoir rsi.getClass().toString() de retour "Hello World" non? Cela ne fonctionne pas comme prévu ci-dessus, car vous appelez une autre méthode toString dans un autre objet. Vous appelez cette fonction: http://developer.android.com/reference/java/lang/Class.html#toString()

Le problème est ici, que RunningServiceInfo vous indique seulement ce que le service est en cours d'exécution. Cela ne vous donne pas réellement l'objet de votre service.

Maintenant, comment pouvez-vous le corriger? Cela dépend de ce que vous voulez faire exactement.

Mais la meilleure façon d'accéder à votre service à partir d'une autre application est de s'y lier. Si votre service est dans la même application, vous pouvez suivre ce tutoriel: http://www.androidcompetencycenter.com/2009/01/basics-of-android-part-iii-android-services/

Comment faire que sur une autre application:
how to bind a remote service that is installed on my android device?

Questions connexes