我必須爲我公司的產品API編寫一個Android SDK,供客戶的應用程序使用。該SDK將包含在sparate過程中運行的後臺服務(通過在AndroidManifest.xml中爲該服務設置android:process="com.my.sdk.process"
)。如何讓多個應用在Android中共享遠程服務?
如果有多個應用程序使用我的SDK,爲了節省資源,我如何確保只有一個服務進程實例存在,而不是每個應用程序都擁有一個實例?
我必須爲我公司的產品API編寫一個Android SDK,供客戶的應用程序使用。該SDK將包含在sparate過程中運行的後臺服務(通過在AndroidManifest.xml中爲該服務設置android:process="com.my.sdk.process"
)。如何讓多個應用在Android中共享遠程服務?
如果有多個應用程序使用我的SDK,爲了節省資源,我如何確保只有一個服務進程實例存在,而不是每個應用程序都擁有一個實例?
最簡單的方法是將服務放在單獨的APK中,這需要讓用戶通過APP的安裝過程來付費。
但是,如果我理解正確,您希望避免這種情況,並且在所有客戶端應用程序中都有相同服務的實例,並且其中一個實例在任何給定時間點都會被選出,然後所有客戶端都會與此進行通信使用AIDL選擇服務。
我還沒有嘗試過,但我們可以嘗試以下 1)主機在單獨的進程服務,但讓他們共享相同的 2)從你的SDK,存在於所有的客戶端,使用綁定服務意圖 意向intent =新意圖(「this.should.be.same.for.everybody」);
希望您的每個應用程序中的所有服務代碼都能收到回調。你可以根據他們執行選舉/選擇邏輯 1)最新版本 2)第一個可用的 3)能力 ..等等。
你還必須採取下列情形 1)如果承載正在運行的服務未對應用程序安裝 2什麼的開銷),如果有什麼有更新 (一)更新當前正在運行的服務 (b)更新沒有運行但在更新後的服務,成爲選擇的候選人。
讓我知道它是否有效。
爲此,您需要使用aidl服務機制。 在developer.android.com上搜索,有一個適當的例子來說明如何使用aidl .. – AAnkit 2012-07-12 14:52:58