CrashApplication.java 3.9 KB

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