Android 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库的官网查看,谢谢你的阅读!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值