我试图覆盖服务的 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());
}
最佳答案
您希望 rsi.getClass().toString()
返回“Hello World”,对吗?
它没有像上面预期的那样工作,因为您在另一个对象中调用了另一个 toString
方法。您调用此函数:http://developer.android.com/reference/java/lang/Class.html#toString()
这里的问题是,RunningServiceInfo
只告诉您正在运行的服务。它实际上并没有给你服务的对象。
现在你怎样才能让它正确呢?具体取决于您想要做什么。
但是从另一个应用程序访问您的服务的最好方法是绑定(bind)到它。 如果您的服务在同一个应用程序中,您可以按照本教程进行操作: 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?
关于java - 如何覆盖 android 服务中的 toString() 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4141369/