2012-10-29 108 views
1

大家都在看android源碼,但是我找不到對我有用的東西。實際上,我想知道ContentProvider是否可以像AIDL一樣工作。您知道,AIDL可以實現兩者之間的通信獨立申請。ContentProvider如何在內部工作

所以,我只想看看ContentProvider如何在內部工作。

+0

這可能有助於http://stackoverflow.com/a/8591438/444324 –

+0

哦,謝謝你的回覆..是啊,它說ContentProvider基於AIDL,對我很有用!如果答案可以解釋更多關於ContentProvidor如何在內部工作,在源代碼中,會更好。無論如何,非常感謝!根據我的理解, – MichaelYe

+0

恰恰相反。 –

回答

1

從ContentProvider的Source code

內容提供商的Android的 應用程序的主要組成部分之一,對應用程序提供的內容。它們封裝數據 並通過單個ContentResolver 接口將其提供給應用程序。僅當您需要在多個應用程序之間共享 數據時,才需要內容提供者。例如,聯繫人數據是由多個應用程序使用的 ,並且必須存儲在提供商的內容 中。如果您不需要在多個 應用程序之間共享數據,則可以通過 android.database.sqlite.SQLiteDatabase直接使用數據庫。

根據這一點,在我發給你的鏈接的信息,ContentProvider的使用AIDL ......它使用ContentResolver的接口。

+0

嗨,Liorry.Thanks您的答覆..我同意你的ContentProvider使用ContentResolver接口。但它如何達到暴露數據到其他應用程序?感謝這[鏈接](stackoverflow.com/a/8591438/444324)我認爲這是AIDL.But我不太確定。你怎麼看 ? – MichaelYe

+0

@ user1727934與AIDL不同,contentProvider不允許在應用程序之間進行通信。它只允許數據共享。我認爲它基於您可以共享您的sharedPreferences(Activity.MODE_WORLD_READABLE/WRITABLE)的相同方式。它只是一個標誌,告訴系統你允許公衆訪問這個文件/ SQL數據庫。與Android本身顯示聯繫人,書籤等一樣,他們使用contentProvider。 –

1

內容提供者在內部使用IPC綁定器。 「事實上,Intents和ContentProvider只是Binder的一個更高級別的抽象」