如何在android服务中覆盖toString()方法?

时间:2010-11-10 04:57:48

标签: java android tostring

我试图覆盖服务的toString()函数。我有一个服务,我正在使用另一个应用程序来访问toString()。但是输出不是预期的,我怀疑toString()的覆盖失败了!有人可以帮忙吗?感谢

///////////////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());
}

1 个答案:

答案 0 :(得分:2)

您希望rsi.getClass().toString()返回“Hello World”吗? 它无法正常工作,因为您在另一个对象中调用了另一个toString方法。您可以调用此函数:http://developer.android.com/reference/java/lang/Class.html#toString()

问题在于,RunningServiceInfo仅告诉您正在运行的服务。它实际上并没有为您提供服务对象。

现在你怎么能纠正它?取决于你想要做什么。

但是,从另一个应用程序访问您的服务的最好方法是绑定它。 如果您的服务位于同一个应用中,则可以按照本教程进行操作: http://www.androidcompetencycenter.com/2009/01/basics-of-android-part-iii-android-services/

如何从另一个应用程序中执行此操作:
how to bind a remote service that is installed on my android device?