Android

寻找 ContentProvider 过程

2021-12-08  本文已影响0人  朱兰婷

前言

本文代码基于 Android S 。

概述

ContentResolver 查找对应 URI 的 ContentProvider 步骤简单概要为:

  1. ContentProvider 的提供方在其 AndroidManifest 中注册 authority;
  2. AMS 缓存各个 userId 对应的 [authority, IContentProvider];
  3. ContentResolver 从 URI 中取出其 authority 并在 AMS 中获取对应的 IContentProvider。

ContentProvider 提供方注册 authority

注册 Authority

AMS 缓存所有 ContentProvider 的 IContentProvider

AMS 缓存 ContentProvider 主要分为三步:

  1. 开机时缓存所有系统进程中的 ContentProvider;
  2. 解锁后缓存所有正在运行进程的 ContentProvider;
  3. 进程启动后主动向 AMS 发布其 ContentProvider;比如,ContentResolver 中当前查找的 ContentProvider 进程没有启动,AMS 会先启动该进程,并等待该进程发布其 ContentProvider;
AMS 缓存 ContentProvider

ContentResolver 通过 URI 中的 authority 查找 AMS 对应的 ContentProvider

ContentResolver 查找 ContentProvider

总结

ContentResolver 寻找正确的 ContentProvider

原创文章,欢迎转载,但请注明出处。

上一篇下一篇

猜你喜欢

热点阅读