-
Notifications
You must be signed in to change notification settings - Fork 253
/
ModuleLifecycleConfig.java
61 lines (52 loc) · 2.05 KB
/
ModuleLifecycleConfig.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
package com.goldze.base.config;
import android.app.Application;
import com.goldze.base.base.IModuleInit;
import io.reactivex.annotations.Nullable;
/**
* Created by goldze on 2018/6/21 0021.
* 作为组件生命周期初始化的配置类,通过反射机制,动态调用每个组件初始化逻辑
*/
public class ModuleLifecycleConfig {
//内部类,在装载该内部类时才会去创建单例对象
private static class SingletonHolder {
public static ModuleLifecycleConfig instance = new ModuleLifecycleConfig();
}
public static ModuleLifecycleConfig getInstance() {
return SingletonHolder.instance;
}
private ModuleLifecycleConfig() {}
//初始化组件-靠前
public void initModuleAhead(@Nullable Application application) {
for (String moduleInitName : ModuleLifecycleReflexs.initModuleNames) {
try {
Class<?> clazz = Class.forName(moduleInitName);
IModuleInit init = (IModuleInit) clazz.newInstance();
//调用初始化方法
init.onInitAhead(application);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
}
//初始化组件-靠后
public void initModuleLow(@Nullable Application application) {
for (String moduleInitName : ModuleLifecycleReflexs.initModuleNames) {
try {
Class<?> clazz = Class.forName(moduleInitName);
IModuleInit init = (IModuleInit) clazz.newInstance();
//调用初始化方法
init.onInitLow(application);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
}
}