当前位置:   article > 正文

AndroidX App Startup助力Android利用ContentProvider初始化组件_android contentprovider初始化

android contentprovider初始化

伪代码如下:

  1. ActivityThread
  2. private void handleBindApplication(AppBindData data) {
  3. ...
  4. //1.获取到Application
  5. app = data.info.makeApplication(data.restrictedBackupMode, null);
  6. ...
  7. //2.初始化ContentProvider
  8. installContentProviders(app, data.providers);
  9. ...
  10. //3.调用Application的onCreate
  11. mInstrumentation.callApplicationOnCreate(app);
  12. ...
  13. }

由此可知:APP启动的整体顺序是获取Application->初始化ContentProvider->调用Application#onCreate。也就是说ContentProvider的初始化是要在Application之前的。其中ContentProvider的初始化就是循环便利储存ContentProvider的集合调用它的onCreate方法。

        因此,很多第三方组件的初始化放到了ContentProvider中,例如leakcanary2的初始化、firebase初始化、WorkManager初始化等。

使用ContentProvider初始化优缺点
优点:
        低侵入接入,不需要手动添加初始化代码,降低接入成本。
降低耦合度,抽离代码方便。
缺点:
        多个SDK使用ContentProvider初始化,无法保证不同SDK初始化循序。
最好注意多个ContentProvider初始化的时长,加载完毕才会执行Application#onCreate的调用。
注意暴露风险,声明provider的时候,配置exported为false。

 Jetpack新成员AndroidX App Startup

App Startup 提供了一个 ContentProvider 来运行所有依赖项的初始化,避免每个第三方库单独使用 ContentProvider 进行初始化,从而提高了应用的程序的启动速度。

本文内容由网友自发贡献,转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/993201
推荐阅读
相关标签
  

闽ICP备14008679号