App Startup 是一个可以用于加速 App 启动速度的一个库。
平时开发中,大部分的第三方都需要在 Application 中进行初始化,但是有些库则会借助 ContentProvider 来初始化,以便使自己的库引入成本更低,代码侵入性更低,使用更加简便。
但是,一旦项目引入了使用 ContentProvider 进行初始化的库越来越多,那么应用的启动速度将会越来越慢,因为每个 ContentProvider 的初始化都是比较耗时的操作。
而 App Startup,它可以将所有用于初始化的 ContentProvider 合并成一个,从而使 App 的启动速度变得更快。实际上,App Startup 内部也创建了一个 ContentProvider,并提供了一套用于初始化的标准。
如果你在设计一款第三方库,建议使用 App Startup 来初始化你的库,而非 ContentProvider。
基本使用下面来介绍 App Startup 的使用。
步骤一:引入依赖
implementation "androidx.startup:startup-runtime:1.1.1"
步骤二:创建 Initializer 类
class MainInitializer : Initializer{ override fun create(context: Context) { // todo 执行库的初始化操作 } override fun dependencies(): List >> = emptyList() }
步骤三:在 AndroidManifest.xml 中声明
其中,meta-data 中的 android:name 节点需要指定成我们自定义的 Initializer 的全路径类名,其他部分都是不能修改的,否则App Startup库可能会无法正常工作。
手动初始化我们可以在 meta-data 中加入 tools:node="remove" 使对应的 Initializer 失效,例如:
这样,WorkManagerInitializer 将不会执行 onCreate 方法,因此,如果我们想要执行 WorkManagerInitializer 的初始化,需要手动调用 WorkManager 的初始化方法。



