我试图覆盖服务的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());
}
答案 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?