App Startup可以在App启动时直接、高效的初始化组件,可以显式设置初始化顺序,允许共用一个ContentProvider以提高启动速度。
配置
dependencies {
implementation "androidx.startup:startup-runtime:1.0.0-alpha03"
}
在App Startup中初始化组件
创建类实现Initializer<T>
接口。
- create()方法包含所有初始化组件必要的操作。
- dependencies()方法返回这个initializer依赖的Initializer<T>列表,可以控制Initializer<T>的初始化顺序。没有依赖可传空列表。
以WorkManager
为例:
class WorkManagerInitializer: Initializer<WorkManager> {
override fun create(context: Context): WorkManager {
val configuration = Configuration.Builder().build()
WorkManager.initialize(context, configuration)
return WorkManager.getInstance(context)
}
override fun dependencies(): List<Class<out Initializer<*>>> {
return emptyList()
}
}
设置manifest
App Startup使用InitializationProvider
初始化各个initializer,优先检查<meta-data>
,然后调用dependencies()
初始化发现的initializer。
<provider
android:name="androidx.startup.InitializationProvider"
android:authorities="${applicationId}.androidx-startup"
android:exported="false"
tools:node="merge">
<!-- This entry makes ExampleLoggerInitializer discoverable. -->
<meta-data android:name="com.example.ExampleLoggerInitializer"
android:value="androidx.startup" />
</provider>
网友评论