CrashApplication.java 3.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. package com.emato.ich.crash;
  2. import android.app.Activity;
  3. import android.app.Application;
  4. import android.util.Log;
  5. import androidx.annotation.NonNull;
  6. import androidx.appcompat.widget.TooltipCompat;
  7. import com.cherry.sdk.controller.BuildConfig;
  8. import com.emato.ich.MainActivity;
  9. import com.emato.ich.update.UpdateService;
  10. import com.xuexiang.xupdate.XUpdate;
  11. import com.xuexiang.xupdate.entity.UpdateError;
  12. import com.xuexiang.xupdate.listener.OnUpdateFailureListener;
  13. import com.xuexiang.xupdate.proxy.IUpdateHttpService;
  14. import com.xuexiang.xupdate.utils.UpdateUtils;
  15. import org.jetbrains.annotations.NotNull;
  16. import java.util.ArrayList;
  17. import java.util.List;
  18. import java.util.Map;
  19. public class CrashApplication extends Application {
  20. private final List<Activity> mActivityList = new ArrayList<>();
  21. private static final String TAG = CrashApplication.class.getName();
  22. @Override
  23. public void onCreate() {
  24. super.onCreate();
  25. UncaughtExceptionHandlerImpl.getInstance().init(getApplicationContext(), BuildConfig.DEBUG, true, 1000, MainActivity.class);
  26. //设置版本更新出错的监听
  27. XUpdate.get()
  28. .debug(true)
  29. .isWifiOnly(false) //默认设置只在wifi下检查版本更新
  30. .isGet(false) //默认设置使用get请求检查版本
  31. .isAutoMode(true) //默认设置非自动模式,可根据具体使用配置
  32. .param("versionCode", UpdateUtils.getVersionCode(this)) //设置默认公共请求参数
  33. .param("appKey", getPackageName())
  34. .setOnUpdateFailureListener(error -> {
  35. Log.i(TAG, "onCreate: 自动更新失败! " + error.getCode());
  36. })
  37. .supportSilentInstall(true) //设置是否支持静默安装,默认是true
  38. .setIUpdateHttpService(new UpdateService()) //这个必须设置!实现网络请求功能。
  39. .init(this); //这个必须初始化
  40. }
  41. /**
  42. * 添加单个Activity
  43. */
  44. public void addActivity(Activity activity) {
  45. // 为了避免重复添加,需要判断当前集合是否满足不存在该Activity
  46. if (!mActivityList.contains(activity)) {
  47. mActivityList.add(activity); // 把当前Activity添加到集合中
  48. }
  49. }
  50. /**
  51. * 销毁单个Activity
  52. */
  53. public void removeActivity(Activity activity) {
  54. // 判断当前集合是否存在该Activity
  55. if (mActivityList.contains(activity)) {
  56. mActivityList.remove(activity); // 从集合中移除
  57. if (activity != null){
  58. activity.finish(); // 销毁当前Activity
  59. }
  60. }
  61. }
  62. /**
  63. * 销毁所有的Activity
  64. */
  65. public void removeAllActivity() {
  66. // 通过循环,把集合中的所有Activity销毁
  67. for (Activity activity : mActivityList) {
  68. if (activity != null){
  69. activity.finish();
  70. }
  71. }
  72. //杀死该应用进程
  73. android.os.Process.killProcess(android.os.Process.myPid());
  74. }
  75. @Override
  76. public void onLowMemory() {
  77. super.onLowMemory();
  78. System.gc();
  79. }
  80. }