您好,登錄后才能下訂單哦!
ContentProvider統一了對數據源操作的接口,并支持進程間通信(IPC),應用進程之間可以通過ContentProvider對外暴露接口,來分享數據。 作為android中核心組件,不得不深入了解,翻看了android的源碼寫篇blog與大家分享。
1.我畫了一個靜態類結構圖,看下圖:
上圖中已經把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時以上對象的調用時序:
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。