AppInitialzer
用于子模块在Application启动时执行初始化代码的库
特点:不用继承Application(demo中只是为了打印一下log)自动执行子模块中标记需要初始化的类
用法:
- 根目录下的build.gradle添加maven仓库
allprojects {
repositories {
google()
jcenter()
maven { url 'https://dl.bintray.com/tsubasap91/maven' }
}
}
2.具体子模块中添加依赖
dependencies {
// AS 3.0以上不用complie了,用api或者implementation
implementation "com.tsubasa.app_initializer:core:$rootProject.ext.apiVersion"
// 如果是kotlin的用kapt,参照demo的sample_module2的build.gradle
annotationProcessor "com.tsubasa.app_initializer:compiler:$rootProject.ext.complierVersion"
// ....other
}
3.在子模块中创建类,实现IInitializer,添加@Initable注解
sample_module1
@Initable
public class Initializer1 implements IInitializer {
@Override
public void init(Context context) {
Log.e("IInitializer", "java子模块的初始化");
}
}
sample_module2,kotlin也可以喔
@Initable
class Initializer2 : IInitializer {
override fun init(context: Context?) {
Log.e("IInitializer", "kotlin子模块的初始化")
}
}
ps:注意每个模块只能放置一个被@Initable标注的类