尋找 ContentProvider 過程

前言

本文代碼基于 Android S 。

概述

ContentResolver 查找對應(yīng) URI 的 ContentProvider 步驟簡單概要為:

  1. ContentProvider 的提供方在其 AndroidManifest 中注冊 authority;
  2. AMS 緩存各個(gè) userId 對應(yīng)的 [authority, IContentProvider];
  3. ContentResolver 從 URI 中取出其 authority 并在 AMS 中獲取對應(yīng)的 IContentProvider。

ContentProvider 提供方注冊 authority

注冊 Authority

AMS 緩存所有 ContentProvider 的 IContentProvider

AMS 緩存 ContentProvider 主要分為三步:

  1. 開機(jī)時(shí)緩存所有系統(tǒng)進(jìn)程中的 ContentProvider;
  2. 解鎖后緩存所有正在運(yùn)行進(jìn)程的 ContentProvider;
  3. 進(jìn)程啟動后主動向 AMS 發(fā)布其 ContentProvider;比如,ContentResolver 中當(dāng)前查找的 ContentProvider 進(jìn)程沒有啟動,AMS 會先啟動該進(jìn)程,并等待該進(jìn)程發(fā)布其 ContentProvider;
AMS 緩存 ContentProvider

ContentResolver 通過 URI 中的 authority 查找 AMS 對應(yīng)的 ContentProvider

ContentResolver 查找 ContentProvider

總結(jié)

ContentResolver 尋找正確的 ContentProvider

原創(chuàng)文章,歡迎轉(zhuǎn)載,但請注明出處。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容