官方文档:
https://developer.android.google.cn/topic/libraries/app-startup
App Startup 提供了一个 ContentProvider 来运行所有依赖项的初始化,避免每个第三方库单独使用 ContentProvider 进行初始化,从而提高了应用的程序的启动速度
App Startup分为自动初始化(自动初始化清单文件中的InitializationProvider)和手动初始化,由开发人员在代码中调用初始化接口进行初始化逻辑调用,实现依赖库等资源的延迟初始化,从而达到App启动速度优化。
所以,最好的使用方式是根据实际资源依赖关系把自动初始化和手动初始化结合使用
代码实现:
在需要调用的Libary中 build.gradle 文件内添加依赖
implementation "androidx.startup:startup-runtime:1.0.0-alpha01"
自动初始化:(不需要手动再调用初始化方法,启动顺序为app启动---- InitializationProvider------MainActivity)
1.在需要调用的Libary中新建一个实现androidx.startup.Initializer接口的类,如LibAuto.kt
2.在调用的Libary清单文件中注册对应的InitializationProvider
3.在需要的代码module里面如(::app)里面增加对当前Library 的依赖即可
手动初始化:(需要调用
AppInitializer.getInstance(applicationContext).initializeComponent(LibManual::class.java)进行初始化,好处在于可以延迟不必要组件的初始化逻辑执行,可以按开发人员的编程逻辑进行资源初始化调用,可以适时可控地进行资源调用)
1. 在需要调用的Libary中新建一个实现androidx.startup.Initializer接口的类,如LibManual.kt
2.在代码需要进行Library资源初始化的时候进行初始化,如MainActiv.Oncreate()
同时使用LibAuto.kt和LibManual.kt进行初始化启动顺序:
https://juejin.cn/post/6844904190440013837