0
点赞
收藏
分享

微信扫一扫

JetPack Startup

酷子腿长一米八 2021-09-19 阅读 76

引入原因(背景)

ContentProvider Android四大组件使用的较少的组件,主要功能是应用间的数据共享,LeakCanary 在这里用到的却并不是这个功能,而只是它生命周期的一部分。

如此便实现了库自动初始化的效果,这种巧妙的方案有啥缺点不呢?
因为 ContentProvider 属于四大组件之一,属于重量级了,google 官方给出的测试结果:在一台搭载Android 10系统的Pixel2手机上一个空的ContentProvider大约会占用2ms的耗时,随着ContentProvider的增加,耗时也会跟着一起增加。如果你的应用程序中使用了50个ContentProvider,那么将会占用接近20ms的耗时。

这么看来这种方案虽然简化了库接入着的操作,却增加了珍贵的启动时长,为了解决这个问题,引入了 Startup

Startup 虽然同样是使用 ContentProvider 来进行库的初始化,但是会将应用中所有接入了Startup 的库的操作通过 <provider> <meta-data> 合并到一个 ContentProvider 中进行初始化。

使用方式

定义初始化方法 UtilInitializer

AndroidManifest 配置

兼容性

在需要手动初始化的地方调用 AppInitializer.getInstance(context).initializeComponent(UtilInitializer::class.java) 即可

举报

相关推荐

0 条评论