Skip to content

Commit 0fdd9f8

Browse files
committed
新增: 添加 AutoSize#checkAndInit(Application) 方法, 保证 AndroidAutoSize 在异常情况下也能够正常初始化
1 parent f9d084f commit 0fdd9f8

File tree

1 file changed

+26
-0
lines changed

1 file changed

+26
-0
lines changed

autosize/src/main/java/me/jessyan/autosize/AutoSize.java

+26
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,32 @@ private AutoSize() {
5757
throw new IllegalStateException("you can't instantiate me!");
5858
}
5959

60+
/**
61+
* 检查 AndroidAutoSize 是否已经初始化
62+
*
63+
* @return {@code false} 表示 AndroidAutoSize 还未初始化, {@code true} 表示 AndroidAutoSize 已经初始化
64+
*/
65+
public static boolean checkInit() {
66+
return AutoSizeConfig.getInstance().getInitDensity() != -1;
67+
}
68+
69+
/**
70+
* 由于 AndroidAutoSize 会通过 {@link InitProvider} 的实例化而自动完成初始化, 并且 {@link AutoSizeConfig#init(Application)}
71+
* 只允许被调用一次, 否则会报错, 所以 {@link AutoSizeConfig#init(Application)} 的调用权限并没有设为 public, 不允许外部使用者调用
72+
* 但由于某些 issues 反应, 可能会在某些特殊情况下出现 {@link InitProvider} 未能正常实例化的情况, 导致 AndroidAutoSize 未能完成初始化
73+
* 所以提供此静态方法用于让外部使用者在异常情况下也可以初始化 AndroidAutoSize, 在 {@link Application#onCreate()} 中调用即可
74+
*
75+
* @param application {@link Application}
76+
*/
77+
public static void checkAndInit(Application application) {
78+
if (!checkInit()) {
79+
AutoSizeConfig.getInstance()
80+
.setLog(true)
81+
.init(application)
82+
.setUseDeviceSize(false);
83+
}
84+
}
85+
6086
/**
6187
* 使用 AndroidAutoSize 初始化时设置的默认适配参数进行适配 (AndroidManifest 的 Meta 属性)
6288
*

0 commit comments

Comments
 (0)