天天看點

Android Framework ContentProvider架構

ContentProvider統一了對資料源操作的接口,并支援程序間通信(IPC),應用程序之間可以通過ContentProvider對外暴露接口,來分享資料。 作為android中核心元件,不得不深入了解,翻看了android的源碼寫篇blog與大家分享。

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

Android Framework ContentProvider架構

上圖中已經把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方法傳回。