介绍
Startup库提供了一种简单、高效的方法来初始化启动组件. 它利用 ContentProvider 的初始化原理, 封装了一个 ContentProvider 实现类, 在其 onCreate() 函数中实现组件的初始化. 这样就避免了在 Application 进行初始化.
下面是Android项目集成Startup的步骤.
1. 添加依赖
在module的 build.gradle 文件中添加以下内容.
1 2 3
| dependencies { implementation "androidx.startup:startup-runtime:1.1.1" }
|
2. 创建初始化类
在module中添加初始化实现类.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| import android.content.Context import androidx.startup.Initializer
class ModuleInitializer : Initializer<Any> {
override fun create(context: Context): Any { Module.initialize(context) return Any() }
override fun dependencies(): MutableList<Class<out Initializer<*>>> { return ArrayList() } }
|
3. 配置组件
在module的 AndroidManifest.xml 文件的 application 标签下添加以下内容.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| <manifest <application> <provider android:name="androidx.startup.InitializationProvider" android:authorities="${applicationId}.androidx-startup" android:exported="false" tools:node="merge"> <meta-data android:name=".ModuleInitializer" android:value="androidx.startup" /> </provider> </application> </manifest>
|
4. 手动初始化(可选)
为单个组件停用自动初始化功能.
1 2 3 4 5 6 7 8 9 10 11 12 13
| <manifest <application> <provider android:name="androidx.startup.InitializationProvider" android:authorities="${applicationId}.androidx-startup" android:exported="false" tools:node="merge"> <meta-data android:name=".ModuleInitializer" tools:node="remove" /> </provider> </application> </manifest>
|
为所有组件停用自动初始化功能
1 2 3 4 5 6 7 8
| <manifest <application> <provider android:name="androidx.startup.InitializationProvider" android:authorities="${applicationId}.androidx-startup" tools:node="remove" /> </application> </manifest>
|
通过代码初始化.
1 2
| AppInitializer.getInstance(context) .initializeComponent(ModuleInitializer::class.java)
|
官方文档