Files
fastbee/android/app/src/main/java/com/kerwin/wumei/MyApp.java
2021-06-19 17:16:53 +08:00

126 lines
3.6 KiB
Java

package com.kerwin.wumei;
import android.app.Application;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.location.LocationManager;
import android.net.wifi.WifiManager;
import android.os.Build;
import androidx.lifecycle.LifecycleOwner;
import androidx.lifecycle.MutableLiveData;
import androidx.lifecycle.Observer;
import androidx.multidex.MultiDex;
import com.kerwin.wumei.http.interceptor.CustomLoggingInterceptor;
import com.kerwin.wumei.utils.SettingSPUtils;
import com.kerwin.wumei.utils.sdkinit.ANRWatchDogInit;
import com.kerwin.wumei.utils.sdkinit.UMengInit;
import com.kerwin.wumei.utils.sdkinit.XBasicLibInit;
import com.kerwin.wumei.utils.sdkinit.XUpdateInit;
import com.xuexiang.xhttp2.XHttpSDK;
import static com.kerwin.wumei.utils.SettingUtils.getServeUrl;
/**
* @author xuexiang
* @since 2018/11/7 下午1:12
*/
public class MyApp extends Application {
private static MyApp app;
private MutableLiveData<String> mBroadcastData;
private BroadcastReceiver mReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if (action == null) {
return;
}
switch (action) {
case WifiManager.NETWORK_STATE_CHANGED_ACTION:
case LocationManager.PROVIDERS_CHANGED_ACTION:
mBroadcastData.setValue(action);
break;
}
}
};
@Override
protected void attachBaseContext(Context base) {
super.attachBaseContext(base);
//解决4.x运行崩溃的问题
MultiDex.install(this);
}
@Override
public void onCreate() {
super.onCreate();
initLibs();
initHttp();
app = this;
mBroadcastData = new MutableLiveData<>();
IntentFilter filter = new IntentFilter(WifiManager.NETWORK_STATE_CHANGED_ACTION);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
filter.addAction(LocationManager.PROVIDERS_CHANGED_ACTION);
}
registerReceiver(mReceiver, filter);
}
@Override
public void onTerminate() {
super.onTerminate();
unregisterReceiver(mReceiver);
}
public static MyApp getInstance() {
return app;
}
public void observeBroadcast(LifecycleOwner owner, Observer<String> observer) {
mBroadcastData.observe(owner, observer);
}
/**
* 初始化基础库
*/
private void initLibs() {
XBasicLibInit.init(this);
XUpdateInit.init(this);
//运营统计数据运行时不初始化
if (!MyApp.isDebug()) {
UMengInit.init(this);
}
//ANR监控
ANRWatchDogInit.init();
}
private void initHttp() {
XHttpSDK.init(this); //初始化网络请求框架,必须首先执行
XHttpSDK.setSuccessCode(200);
XHttpSDK.debug(); //需要调试的时候执行
XHttpSDK.debug(new CustomLoggingInterceptor()); //设置自定义的日志打印拦截器
XHttpSDK.setBaseUrl(getServeUrl()); //设置网络请求的基础地址
// XHttpSDK.addInterceptor(new CustomDynamicInterceptor()); //设置动态参数添加拦截器
// XHttpSDK.addInterceptor(new CustomExpiredInterceptor()); //请求失效校验拦截器
}
/**
* @return 当前app是否是调试开发模式
*/
public static boolean isDebug() {
return BuildConfig.DEBUG;
}
}