2010-05-27 79 views
0

調用後:不能綁定到遠程服務

result=bindService(new Intent(IUdpListenerService.class.getName()), 
      serviceConnection, Context.BIND_AUTO_CREATE); 

BYT調試:結果恢復 '真'

的onServiceConnected不會被調用。

*生病提的是,遠程服務安裝在不同勢APK,並正在通過命令startService(..)

Okie ..這是新的東西。我剛剛纔開始:onServiceConnected正在triggerd,但它需要時間,所以這裏發生了什麼......當我使用我的接口的實例 - 它仍然是remine null,之前onServiceConnected管理被觸發..是可能的嗎? -

+0

爲什麼你下課後加入的getName()?老實說, – RoflcoptrException 2010-05-27 13:50:27

+0

..我不知道..我拿它從一個例子。你會如何調整它? – Moshik 2010-05-27 13:51:01

+0

在Eclipse中使用'adb logcat',DDMS或DDMS透視圖並尋找警告。例如,如果Android無法識別要綁定的服務,則通常會收到警告。 – CommonsWare 2010-05-27 13:55:58

回答

3

的服務需要有一個動作的<intent-filter>

<service android:name=".BshService"> 
     <intent-filter> 
      <action android:name="com.commonsware.android.advservice.IScript" /> 
     </intent-filter> 
    </service> 

然後,您可以使用的操作表單0綁定到它:

new Intent("com.commonsware.android.advservice.IScript") 

,或者,如果你的客戶剛好有一個在com.commonsware.android.advservice包命名IScript類或接口:

new Intent(IScript.getName()); 
+0

如果結果返回true(PLZ檢查我的編輯),不是它的一個標誌綁定的成功? – Moshik 2010-05-27 14:28:03

+0

Okie ..這是我剛剛發現的新東西:現在onServiceConnected正在觸發,但它需要時間,所以這裏發生了什麼......我的界面實例 - 當我使用它時,它仍然是remine null,onServiceConnected之前管理被觸發..是可能的嗎? – Moshik 2010-05-27 14:34:15

+0

是的,ServiceConnection爲空,直到調用onServiceConnected(如其名稱所示)。 – 2010-05-27 14:48:45

1

您使用的構造函數Intent需要Action,而不是類名。要啓動某項服務,請改爲使用new Intent(<package context, e.g. this>, IUdpListenerService.class)

更新:啓動一個服務或活動中的另一個包,使用setComponent:

new Intent().setComponent(new ComponentName("com.remote", "com.remote.IUdpListenerService")); 

(詳見this問題)

+0

如果我的遠程服務在另一個名爲remote的應用程序,在com.remote包下,你將如何調整它?因爲我試過了,它也沒有工作 – Moshik 2010-05-27 14:02:02

+0

你想在另一個包中啓動服務?看到這個問題的答案: http://stackoverflow.com/questions/2209513/how-to-start-activity-in-another-application – 2010-05-27 14:10:29