前言
本文代码基于 Android S 。
概述
ContentResolver 查找对应 URI 的 ContentProvider 步骤简单概要为:
- ContentProvider 的提供方在其 AndroidManifest 中注册 authority;
- AMS 缓存各个 userId 对应的 [authority, IContentProvider];
- ContentResolver 从 URI 中取出其 authority 并在 AMS 中获取对应的 IContentProvider。
ContentProvider 提供方注册 authority
AMS 缓存所有 ContentProvider 的 IContentProvider
AMS 缓存 ContentProvider 主要分为三步:
- 开机时缓存所有系统进程中的 ContentProvider;
- 解锁后缓存所有正在运行进程的 ContentProvider;
- 进程启动后主动向 AMS 发布其 ContentProvider;比如,ContentResolver 中当前查找的 ContentProvider 进程没有启动,AMS 会先启动该进程,并等待该进程发布其 ContentProvider;
ContentResolver 通过 URI 中的 authority 查找 AMS 对应的 ContentProvider
总结
原创文章,欢迎转载,但请注明出处。