Jetpack的 App Startup库的使用简介
Jetpack的 App Startup库的使用简介
App Startup库的介绍
App Startup库提供了一种直接,高效的方法来在应用程序启动时初始化组件。库开发人员和应用程序开发人员都可以使用“应用程序启动”来简化启动顺序并显式设置初始化顺序。
App Startup允许您定义共享单个内容提供程序的组件初始化程序,而无需为需要初始化的每个组件定义单独的内容提供程序。这可以大大缩短应用程序的启动时间。
实现原理
可以看到,一个应用程序的执行顺序是这个样子的。首先调用Application的attachBaseContext()方法,然后调用ContentProvider的onCreate()方法,接下来调用Application的onCreate()方法
App Startup内部也创建了一个ContentProvider,并提供了一套用于初始化的标准。然后对于其他第三方库来说,你们就不需要再自己创建ContentProvider了,都按App Startup提供的这套标准进行实现就行了,App Startup可以保证我们的库在App启动之前都成功进行初始化
解决的问题
-
解决了在引入了非常多的第三方库,Application里的代码非常凌乱的问题
-
使库的开发者不需要在自己的库里借助ContentProvider来初始化库,从而提升应用的启动时间
-
让库的初始化可以在Application的onCreate()方法之前完成初始化工作
.
App Startup库的使用
1. build.gradle文件中添加依赖
dependencies {
implementation "androidx.startup:startup-runtime:1.0.0"
}
2. 实现App Startup库的Initializer接口
class MyInitializer implements Initializer<Unit> {
@Override
//进行库的初始化操作
public MyInitializer create(Context context) {
//在这里进行第三方库的初始化
XXXX.initialize(context)
}
@Override
//表示当前要初始化的库是否还依赖于其他的Initializer,如果有的话,就在这里进行配置
public List<Class<Initializer<?>>> dependencies() {
// 当前库无第三方库依赖
return emptyList();//返回一个看的集合
}
}
3. 将定义好的Initializer配置到AndroidManifest.xml中
<provider
android:name="androidx.startup.InitializationProvider"
android:authorities="${applicationId}.androidx-startup"
android:exported="false"
tools:node="merge">
<meta-data android:name="com.myclass.MyInitializer"
android:value="androidx.startup" />
</provider>
注: 只有meta-data中的android:name部分我们需要指定成我们自定义的Initializer的全路径类名,其他部分都是不能修改的,否则App Startup库可能会无法正常工作。
到这里App Startup库的使用就基本结束了,下面介绍一下任何手动初始化组件。
.
手动初始化第三方库(延迟初始化)
1. 禁用单个库的自动初始化
要禁用单个库的自动初始化,请<meta-data>
从清单中删除该库的初始化程序的条目
<provider
android:name="androidx.startup.InitializationProvider"
android:authorities="${applicationId}.androidx-startup"
android:exported="false"
tools:node="merge">
<meta-data android:name="com.myclass.MyInitializer"
tools:node="remove" />
</provider>
在需要初始化的时候手动去初始化,如下所示:
AppInitializer.getInstance(context)
.initializeComponent(MyInitializer.class);
2. 禁用所有库的自动初始化
要禁用所有自动初始化,请InitializationProvider
从清单中删除的整个条目
<provider
android:name="androidx.startup.InitializationProvider"
android:authorities="${applicationId}.androidx-startup"
tools:node="remove" />
在需要初始化的时候手动去初始化,如下所示:
AppInitializer.getInstance(context)
.initializeComponent(MyInitializer.class);
到这里 App Startup库的使用和功能介绍就全部结束了,想了解更多细节请到App Startup库的官网查看,谢谢你的阅读!
上一篇: AndroidX 迁移步骤,一篇就够了
推荐阅读
-
PHP的cURL库简介及使用示例
-
【mysql基本使用学习笔记day01】【数据库简介】数据存储+数据库+RDBMS+RDBMS和数据库的关系+SQL+MySQL
-
ffmpeg - 编译 macOS app 使用的库
-
Android Jetpack Paging3分页库的使用(概述以及网络加载)
-
ASP.NET Core的实时库: SignalR简介及使用
-
简介Lua脚本与Redis数据库的结合使用
-
app 下载更新 file-downloader 文件下载库的简单介绍和使用
-
Java Jwt库的简介及使用详解
-
PHP的cURL库简介及使用示例_php实例
-
PHP的cURL库简介及使用示例_PHP教程