2016-08-08 56 views
2

我有一個模塊A.實現的服務現在Apps的B和C使用這個庫來使用bindService(service, connection, BIND_AUTO_CREATE)服務綁定,但它始終會服務的新實例。我正在使用Messenger將活頁夾返回到連接對象。如果我使用AIDL,如何共享相同的服務實例?我已閱讀並嘗試幾乎所有與此問題相關的stackoverflow答案。但是我仍然無法實現我之前解釋的內容。與現有服務的Android綁定在多個應用

此項服務的清單是模塊A中定義全過程名稱爲加工屬性和出口,使被設定爲真。

<service 
     android:name="io.packagename.LocationService" 
     android:enabled="true" 
     android:exported="true" 
     android:permission="android.permission.ACCESS_FINE_LOCATION" 
     android:process="io.packagename.locationService" /> 

LocationService級:

class LocationService extends Service { 
     IncomingHandler handler = new IncomingHandler() 
     Messenger messenger = new Messenger(handler) 

     public IBinder onBind(Intent intent) { 
      Log.d(TAG, "onBind") 
      return messenger.binder 
     } 
     } 

任何幫助深表感謝。

+0

請發表您的服務類 – Lino

+0

@Lino它沒有太多的代碼,但還是保留了它。謝謝 –

+0

謝謝。您如何檢查是否已創建更多服務實例? – Lino

回答

0

引述docs

服務文檔中所討論的,您可以創建一個服務, 既是開始和束縛。也就是說,該服務可以通過 調用startService(),它允許服務無限期運行, 還允許客戶端通過調用 bindService綁定到該服務()開始。

一個例子:

例如,音樂播放器可能會發現它很有用,允許其服務 無限期運行,還提供了具有約束力。通過這種方式,活動 可以啓動服務,播放一些音樂和音樂繼續,即使在用戶離開應用程序 發揮。然後,當用戶 返回到應用程序時,活動可以綁定到服務,以重新獲得對回放的控制。

我相信這適用於您的情況,所以您可以啓動服務並根據需要將客戶端綁定到它。

+0

這是跨活動。我詢問了有關跨應用程序共享的信息 –