package com.emato.ich.crash; import android.app.Activity; import android.app.Application; import android.content.Context; import android.util.Log; import androidx.annotation.NonNull; import androidx.appcompat.widget.TooltipCompat; import com.cherry.sdk.controller.BuildConfig; import com.emato.ich.MainActivity; import com.emato.ich.update.CustomUpdateConfigProvider; import com.emato.ich.update.UpdateService; import com.xuexiang.xupdate.XUpdate; import com.xuexiang.xupdate.aria.AriaDownloadServiceProxyImpl; import com.xuexiang.xupdate.easy.EasyUpdate; import com.xuexiang.xupdate.easy.config.UpdateConfig; import com.xuexiang.xupdate.entity.UpdateError; import com.xuexiang.xupdate.listener.OnUpdateFailureListener; import com.xuexiang.xupdate.proxy.IUpdateHttpService; import com.xuexiang.xupdate.utils.UpdateUtils; import org.jetbrains.annotations.NotNull; import java.util.ArrayList; import java.util.List; import java.util.Map; public class CrashApplication extends Application { private final List mActivityList = new ArrayList<>(); private static final String TAG = CrashApplication.class.getName(); CustomUpdateConfigProvider provider = new CustomUpdateConfigProvider(); @Override protected void attachBaseContext(Context base) { // XUpdate自定义配置 EasyUpdate.setUpdateConfigProvider(provider); super.attachBaseContext(base); } @Override public void onCreate() { super.onCreate(); UncaughtExceptionHandlerImpl.getInstance().init(getApplicationContext(), BuildConfig.DEBUG, true, 1000, MainActivity.class); // XUpdate.get() // .debug(true) // .isWifiOnly(false) //默认设置只在wifi下检查版本更新 // .isGet(false) //默认设置使用get请求检查版本 // .isAutoMode(true) //默认设置非自动模式,可根据具体使用配置 // .param("versionCode", UpdateUtils.getVersionCode(this)) //设置默认公共请求参数 // .param("appKey", getPackageName()) // .setOnUpdateFailureListener(error -> { // Log.i(TAG, "onCreate: 自动更新失败! " + error.getCode()); // }) // .supportSilentInstall(true) //设置是否支持静默安装,默认是true // .setIUpdateHttpService(new UpdateService()) //这个必须设置!实现网络请求功能。 // .init(this); //这个必须初始化 } /** * 添加单个Activity */ public void addActivity(Activity activity) { // 为了避免重复添加,需要判断当前集合是否满足不存在该Activity if (!mActivityList.contains(activity)) { mActivityList.add(activity); // 把当前Activity添加到集合中 } } /** * 销毁单个Activity */ public void removeActivity(Activity activity) { // 判断当前集合是否存在该Activity if (mActivityList.contains(activity)) { mActivityList.remove(activity); // 从集合中移除 if (activity != null){ activity.finish(); // 销毁当前Activity } } } /** * 销毁所有的Activity */ public void removeAllActivity() { // 通过循环,把集合中的所有Activity销毁 for (Activity activity : mActivityList) { if (activity != null){ activity.finish(); } } //杀死该应用进程 android.os.Process.killProcess(android.os.Process.myPid()); } @Override public void onLowMemory() { super.onLowMemory(); System.gc(); } }