这是一个帮助组件初始化的库,致力解决组件化后每个模块初始化逻辑多处调用、顺序控制等难以维护的问题,使用了该库后初始化逻辑只需拆分到组件自己的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日志查看执行情况
