溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Android Framework ContentProvider框架

發(fā)布時間:2020-06-08 18:39:44 來源:網(wǎng)絡(luò) 閱讀:612 作者:小偉老師 欄目:移動開發(fā)

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


1.我畫了一個靜態(tài)類結(jié)構(gòu)圖,看下圖:

Android Framework ContentProvider框架

上圖中已經(jīng)把ContentProvider的核心結(jié)構(gòu)列舉了出來。

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

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

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

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


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


Android Framework ContentProvider框架

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI