Jetpack-App Startup
2020/7/3 23:26:34
本文主要是介绍Jetpack-App Startup,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
Jetpack-App Startup
前言
AppStartup 是 Jetpack 组件之一
解决的问题: 一个 Provider 统一初始化所有第三方库,提高 app 启动速度.
使用
1.添加依赖
dependencies {
implementation "androidx.startup:startup-runtime:1.0.0-alpha01"
}
2.创建 Initializer
class ExampleLoggerInitializer : Initializer<ExampleLogger> { override fun create(context: Context): ExampleLogger { // 因为依赖了 WorkManagerInitializer,所以这里 WorkManager 已经初始化完成 return ExampleLogger(WorkManager.getInstance(context)) } override fun dependencies(): List<Class<out Initializer<*>>> { // 指定 ExampleLoggerInitializer 初始化依赖 WorkManagerInitializer // 简单来说就是返回的 WorkManagerInitializer 先于 ExampleLoggerInitializer 初始化 return listOf(WorkManagerInitializer::class.java) } } 复制代码
3.配置 Manifest
<provider android:name="androidx.startup.InitializationProvider" android:authorities="${applicationId}.androidx-startup" android:exported="false" tools:node="merge"> <!-- 配置的 meta-data 的作用是让 InitializationProvider 发现我们第二步创建的 ExampleLoggerInitializer--> <meta-data android:name="com.example.ExampleLoggerInitializer" android:value="androidx.startup" /> </provider> 复制代码
4.延迟初始化(禁用组件初始化)
有时候,某些组件我们初始化的时候用不上,这时候可以延迟初始化已提高启动速度
禁用单个组件初始化
<provider android:name="androidx.startup.InitializationProvider" android:authorities="${applicationId}.androidx-startup" android:exported="false" tools:node="merge"> <meta-data android:name="com.example.ExampleLoggerInitializer" tools:node="remove" /> </provider> 复制代码
禁用所有组件初始化
<provider android:name="androidx.startup.InitializationProvider" android:authorities="${applicationId}.androidx-startup" tools:node="remove" /> 复制代码
5.手动初始化
AppInitializer.getInstance(context) .initializeComponent(ExampleLoggerInitializer::class.java) 复制代码
学习总结
App Startup 组件通过单一 Provider 用来初始化所有三方组件,以提高启动速度 可以通过配置 tools:node="remove" 禁用组件提高启动速度 支持手动初始化组件
相关链接
官方指南
本文使用 mdnice 排版
这篇关于Jetpack-App Startup的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-01-18android.permission.read_media_video
- 2024-01-18android_getaddrinfo failed eai_nodata
- 2024-01-18androidmo
- 2024-01-15Android下三种离屏渲染技术
- 2024-01-09Android 蓝牙使用
- 2024-01-06Android对接华为AI - 文本识别
- 2023-11-15代码安全之代码混淆及加固(Android)
- 2023-11-10简述Android语音播报TTS
- 2023-11-06Android WiFi工具类
- 2023-07-22Android开发未来的出路