2010-11-10 51 views
1

我想覆蓋服務的toString()函數。我有一個服務,我正在使用另一個應用程序來訪問toString()。然而,輸出並不如預期,我懷疑toString()的覆蓋失敗!誰能幫忙?謝謝如何在android服務中重寫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

你可以發佈你寫的代碼......這會很有幫助。順便說一下,它是'覆蓋'而不是'超載',它的兩個不同的東西。 – st0le 2010-11-10 05:00:27

+0

非常感謝您指出錯誤。我附加了我用於toString()的代碼和我調用它的方式。 :) – Ahsan 2010-11-10 05:10:27

回答

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?