Android Framework ContentProvider框架

ContentProvider統一了對數據源操作的接口,並支持進程間通信(IPC),應用進程之間可以通過ContentProvider對外暴露接口,來分享數據。 作爲android中核心組件,不得不深入瞭解,翻看了android的源碼寫篇blog與大家分享。


1.我畫了一個靜態類結構圖,看下圖:

wKiom1R5tS7xCX8WAALgWtpwAI4659.jpg

上圖中已經把ContentProvider的核心結構列舉了出來。

1.IContentProvider定義了所有可以操作數據源的接口,如:query,insert等。

2.ContentProviderNative是一個抽象類繼承自Binder,它並沒有真正實現IContentProvider接口,ContentProviderNative核心方法asInterface,這是一個static的方法負責得到ContentProviderProxy代理對象。

3.ContentProviderProxy實現了IContentProvider所有接口,並支持進程間通信(IPC),主要負責將形參打包到Parcel中通過IBinder.transact發送包並從reply parcel中得到cursor

4.Transport繼承自ContentProviderNative,並通過getIContentProvider方法返回。


我畫了一個時序圖,來說明在Activity中使用getConentResolver().query時以上對象的調用時序:


wKioL1R5tefj_t8uAAV6ZK-MJdo570.jpg

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章