Jetpack AppStartup
概述
- AppStartup是一个可以用于加速App启动速度的Jetpack组件。
- AppStartup是借助ContentProvider进行提前初始化操作
ContentProvider执行流程
Application#attachBaseContext --> ContentProvider#onCreate --> Application#onCreate
添加依赖库
implementation "androidx.startup:startup-runtime:1.0.0"
使用
定义一个Initializer
class AppInitializer : Initializer<Unit> {
override fun create(context: Context) {
LitePal.initialize(context)
}
override fun dependencies(): List<Class<out Initializer<*>>> {
return emptyList()
}
}
实现Initializer接口需要重写两个方法:
create() 负责编写初始化操作dependencies() 如果当前的Initializer还依赖其他的Initializer,那么可以在这里配置。AppStartup会先初始化依赖的Initializer,然后再初始化当前Initializer
Manifest注册
<provider
android:name="androidx.startup.InitializationProvider"
android:authorities="${applicationId}.androidx-startup"
android:exported="false"
tools:node="merge">
<meta-data
android:name="com.example.appstartupdemo.AppInitializer"
android:value="androidx.startup" />
</provider>
|