这是一个帮助组件初始化的库,致力解决组件化后每个模块初始化逻辑多处调用、顺序控制等难以维护的问题,使用了该库后初始化逻辑只需拆分到组件自己的module中,调用线程和顺序控制交由库来帮你完成。
模块 | componentinitializer-api | componentinitializer-compiler |
---|---|---|
最新版本 |
android {
defaultConfig {
...
javaCompileOptions {
annotationProcessorOptions {
arguments = [INITIALIZER_MODULE_NAME: project.getName()]
}
}
}
}
dependencies {
implementation 'com.rocketzly:componentinitializer-api:x.x.x'
annotationProcessor 'com.rocketzly:componentinitializer-compiler:x.x.x'
}
目前已经支持混淆无需额外配置
- 新建一个类用来做模块初始化逻辑,类名可以自己定义,需要有空参构造方法,本例中叫ModuleAInit
- 在该类中新增要进行初始化逻辑的方法,方法名可以自己定义,参数目前支持一个参数类型为Application和无参两种情况,并需要在方法上添加@Init注解
@init注解提供两个属性
- priority:优先级配置,越大优先级越高,默认为1
- thread:运行线程配置,有MAIN, BACKGROUND可选,默认MAIN
public class ModuleAInit {
@Init(priority = 10, thread = ThreadMode.MAIN)
public void sync10(Application application) {
}
@Init(priority = 30, thread = ThreadMode.BACKGROUND)
public void async30(Application application) {
}
}
- 在Application中触发初始化逻辑,我是直接写在了BaseApplication中,其他模块继承即可
public class BaseApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
ComponentInitializer.builder()
.debug(true)
.start(this);
}
}
ComponentInitializer.builder()
.debug(true)//调试
.start(this);
将debug设置为true的时候可以通过标签ComponentInitializer的log日志查看执行情况