Skip to content

RocketZLY/ComponentInitializer

Repository files navigation

ComponentInitializer

这是一个帮助组件初始化的库,致力解决组件化后每个模块初始化逻辑多处调用、顺序控制等难以维护的问题,使用了该库后初始化逻辑只需拆分到组件自己的module中,调用线程和顺序控制交由库来帮你完成。

依赖和配置

模块 componentinitializer-api componentinitializer-compiler
最新版本 download download
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' }

目前已经支持混淆无需额外配置

使用

  1. 新建一个类用来做模块初始化逻辑,类名可以自己定义,需要有空参构造方法,本例中叫ModuleAInit
  2. 在该类中新增要进行初始化逻辑的方法,方法名可以自己定义,参数目前支持一个参数类型为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) { } }
  1. 在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日志查看执行情况

About

一个组件初始化辅助工具😉

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors