有什么用?
应用启动时初始化组件。
怎么用
添加依赖
dependencies {
implementation "androidx.startup:startup-runtime:1.1.1"
}
创建类,继承Initializer。
public class AppInit implements Initializer<String> {
@NonNull
@Override
public String create(@NonNull Context context) {
UMConfigure.init(context, Constant.UMENG_KEY, "", UMConfigure.DEVICE_TYPE_PHONE, "");
return "APP INIT";
}
@NonNull
@Override
public List<Class<? extends Initializer<?>>> dependencies() {
return new ArrayList<>();
}
}
create()初始化组件
dependencies() 返回初始化程序所依赖的其他 Initializer列表。返回空列表,表示没有依赖。
如果有依赖,添加到列表。这样初始化A,就要先初始化B。
public class AInitializer implements Initializer<String> {
@NonNull
@Override
public String create(@NonNull Context context) {
//.....
return "A";
}
@NonNull
@Override
public List<Class<? extends Initializer<?>>> dependencies() {
return Arrays.asList(BInitializer.class);
}
}
配置provider
<provider
android:name="androidx.startup.InitializationProvider"
android:authorities="${applicationId}.androidx-startup"
android:exported="false"
tools:node="merge">
<!-- This entry makes ExampleLoggerInitializer discoverable. -->
<meta-data android:name="cn.jn.mytest.init.AppInit "
android:value="androidx.startup" />
</provider>
启动应用的时候,就会自动初始化组件。
但这不是我们想要的,一般情况下,会先检测是否同意隐私协议,之后,再做处理,这个时候就需要手动初始化组件。
手动初始化组件,需要停用自动初始化功能。
<provider
android:name="androidx.startup.InitializationProvider"
android:authorities="${applicationId}.androidx-startup"
tools:node="remove" />
手动初始化
AppInitializer.getInstance(context)
.initializeComponent(AppInit .class);