[Update]启动优化初版
This commit is contained in:
@@ -1,8 +1,5 @@
|
||||
package com.mogo.commons;
|
||||
|
||||
import static com.mogo.aicloud.services.httpdns.HttpDnsConst.HTTP_DNS_ADDRESS_TYPE_HTTP;
|
||||
import static com.mogo.commons.debug.DebugConfig.CAR_MACHINE_TYPE_SELF_INNOVATE;
|
||||
|
||||
import android.app.Application;
|
||||
import android.content.Context;
|
||||
import android.text.TextUtils;
|
||||
@@ -12,20 +9,11 @@ import android.view.ViewGroup;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.alibaba.android.arouter.launcher.ARouter;
|
||||
import com.mogo.aicloud.services.httpdns.IMogoHttpDns;
|
||||
import com.mogo.aicloud.services.httpdns.MogoHttpDnsHandler;
|
||||
import com.mogo.commons.crash.FinalizeCrashFixer;
|
||||
import com.mogo.commons.debug.DebugConfig;
|
||||
import com.mogo.commons.device.Devices;
|
||||
import com.mogo.commons.network.NetConfigUtils;
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger;
|
||||
import com.mogo.eagle.core.utilcode.mogo.toast.TipDrawable;
|
||||
import com.mogo.eagle.core.utilcode.mogo.toast.TipToast;
|
||||
import com.mogo.eagle.core.utilcode.util.AppStateManager;
|
||||
import com.mogo.eagle.core.utilcode.util.AppUtils;
|
||||
import com.mogo.eagle.core.utilcode.util.CleanUtils;
|
||||
import com.mogo.eagle.core.utilcode.util.ThreadPoolService;
|
||||
import com.mogo.eagle.core.utilcode.util.Utils;
|
||||
|
||||
import io.reactivex.plugins.RxJavaPlugins;
|
||||
@@ -40,27 +28,19 @@ public abstract class AbsMogoApplication extends Application {
|
||||
|
||||
private static final String TAG = "AbsMogoApplication";
|
||||
|
||||
private static Application sApp;
|
||||
protected static Application sApp;
|
||||
|
||||
public static Application getApp() {
|
||||
return sApp;
|
||||
}
|
||||
|
||||
private static IMogoHttpDns sApis;
|
||||
|
||||
@Override
|
||||
public void onCreate() {
|
||||
super.onCreate();
|
||||
AppStateManager.INSTANCE.init(this);
|
||||
initRxJavaErrorHandler();
|
||||
sApp = this;
|
||||
FinalizeCrashFixer.fix();
|
||||
initARouter();
|
||||
Utils.init(this);
|
||||
if (shouldInit()) {
|
||||
initHttpDns();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private void initRxJavaErrorHandler() {
|
||||
@@ -69,40 +49,10 @@ public abstract class AbsMogoApplication extends Application {
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* 初始化跨模块框架 ARouter
|
||||
*/
|
||||
private void initARouter() {
|
||||
try {
|
||||
if (DebugConfig.isDebug()) {
|
||||
ARouter.openDebug();
|
||||
ARouter.openLog();
|
||||
}
|
||||
// 初始化 arouter
|
||||
ARouter.init(sApp);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
// 由于ARouter会在SP_AROUTER_CACHE.xml缓存路由表,如果出现了被删除的情况会报错,这里清除下就好了
|
||||
CleanUtils.cleanInternalSp();
|
||||
// 重启应用
|
||||
AppUtils.relaunchApp();
|
||||
}
|
||||
}
|
||||
|
||||
protected boolean shouldInit() {
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* 初始化 HttpDNS ,这里会通过一个接口获取所有鹰眼中使用的微服务域名以及端口号
|
||||
* 后续的网络请求会通过 HttpDnsInterceptor 进行拦截替换
|
||||
*/
|
||||
protected void initHttpDns() {
|
||||
if (sApis == null) {
|
||||
sApis = MogoHttpDnsHandler.getHttpDnsApi();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 初始化 自定义样式e饿
|
||||
*/
|
||||
@@ -143,49 +93,4 @@ public abstract class AbsMogoApplication extends Application {
|
||||
}
|
||||
return contentView;
|
||||
}
|
||||
|
||||
/**
|
||||
* 异步初始化
|
||||
*/
|
||||
protected void asyncInit() {
|
||||
ThreadPoolService.execute(() -> {
|
||||
if (DebugConfig.getCarMachineType() == CAR_MACHINE_TYPE_SELF_INNOVATE) {
|
||||
Devices.init(getApp());
|
||||
Devices.checkBindState();
|
||||
}
|
||||
//初始化网络配置
|
||||
NetConfigUtils.init();
|
||||
asyncInitImpl();
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* 异步厨初始化
|
||||
*/
|
||||
protected void asyncInitImpl() {
|
||||
|
||||
}
|
||||
|
||||
|
||||
// 缓存IP地址
|
||||
private String cacheIp = null;
|
||||
|
||||
/**
|
||||
* 请求获取最新的 DNS 微服务 域名信息
|
||||
*/
|
||||
protected void registerSocketHttpDnsTTL(String host) {
|
||||
sApis.addressChangedListener(map -> {
|
||||
String dnsCacheIp = sApis.getCachedHttpDnsIps(host, HTTP_DNS_ADDRESS_TYPE_HTTP);
|
||||
if (dnsCacheIp == null) {
|
||||
return;
|
||||
}
|
||||
if (!dnsCacheIp.equals(cacheIp)) {
|
||||
CallerLogger.INSTANCE.d("TEST_SOCKET", "获取缓存Dns IP : " + dnsCacheIp + " , 原缓存 IP : " + cacheIp);
|
||||
socketTTL();
|
||||
this.cacheIp = dnsCacheIp;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
protected abstract void socketTTL();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user