2012-03-10 74 views
1

我想開發一個支持插件並向這些插件提供數據的應用程序。在我看來,在Android上實現這個插件架構的正確方法是爲主應用程序提供一個apk,爲每個插件提供一個apk。ContentProvider與使用AIDL/Messenger

但是,由於主應用程序和每個插件都在不同的應用程序中,我不能輕鬆地將(數據)對象從一個傳遞到另一個,應用程序在不同的進程中運行,即使它們運行在一個進程中被實現)他們有不同的類加載器,這是行不通的。目前我看到兩種有前途的方法可以將數據從我的主應用程序獲取到我的插件中:

  1. 聲明主應用程序爲ContentProvider。這對我來說似乎是預期的方法,因爲它確實實現了我想要實現的目標:向其他進程提供內容/數據。
  2. 製作我的數據對象Parcelable並用AIDL或者 - 如果我不需要多線程 - 用Messenger -approach實現。在我看來,這種方法似乎更容易,因爲我可以在後臺使用關心數據庫的ORM庫。我之前從未使用過ContentProvider,但在第一次看到它時我認爲使用ContentProvider有點像手工構建SQL-Queries(請告訴我,如果我錯了),並且我想避免這種工作!

現在我想知道我是否錯過了任何優點或缺點,以及這兩種方法之間是否存在顯着的性能差異。你更喜歡哪種解決方案?爲什麼要這樣做?

在此先感謝!任何答覆表示讚賞!

回答

2

內容提供者只是在應用程序之間共享數據(以不同方式存儲[數據庫,文件等])的方式。如果你想在應用程序之間共享數據,這是做到這一點的最佳方式。

但是,如果你想服務來執行數據的一些任務(例如,總結由您提供幾個值),最好有一個遠程服務。

在一般情況下,應用程序 - 插件交互更類似於遠程服務。在這種情況下,主應用程序會公開一個遠程服務(此應用程序的一個API),插件可以使用該服務執行某些操作。

相關問題