外观
ContentProvider 为什么会拖慢启动?
标准回答
进程启动时,系统可能在 Application.onCreate 之前安装并初始化该进程声明的 Provider。第三方 SDK 如果在 Provider.onCreate 做数据库、磁盘或复杂初始化,就会拉长启动关键路径。
机制解释
处理顺序是查合并后的 Manifest,确认哪个 SDK 注入 Provider,用 Trace 验证开销,再查它是否支持关闭自动初始化和显式初始化。AndroidX App Startup 能管理初始化依赖,但具体初始化工作仍需控制成本。(App Startup 初始化管理)
延伸追问
可以删掉 Provider,再自己 new 一次吗?不能默认这么做。Provider 的系统注册、Context、权限和生命周期不是普通对象初始化;只有供应方支持的接入方式才可靠。不能臆造一个 SDK.init 方法代替它。
内容来源
- Android 智能硬件 SDK 技术 Wiki · 原条目
Q07