异常捕获主要是在全局的Application中来处理的,Android提供了一个CrashHandler用来进行错误处理。

intent添加 “Intent.FLAG_ACTIVITY_NEW_TASK” 标记的原因是——Content的startActivity方法,需要开启一个新的task。如果使用 Activity的startActivity方法,不会有任何限制,因为Activity继承自Context,重载了startActivity方法。所以如果是context启动Activity就需要添加这个标记。

package com.chy.global;import java.lang.Thread.UncaughtExceptionHandler;import android.app.Application;import android.content.Intent;import com.chy.activity.MainActivity;import com.chy.utils.LogUtils;public class CrashApplication extends Application {//异常处理器private CrashHandler crashHandler = null;@Overridepublic void onCreate() {super.onCreate();crashHandler = new CrashHandler(this);Thread.setDefaultUncaughtExceptionHandler(crashHandler);}class CrashHandler implements UncaughtExceptionHandler {private Application app = null;public CrashHandler(Application app) {this.app = app;}@Overridepublic void uncaughtException(Thread thread, Throwable ex) {ex.printStackTrace();LogUtils.log(ex);// 此处示例发生异常后,重新启动应用Intent intent = new Intent(app, MainActivity.class);intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);app.startActivity(intent);android.os.Process.killProcess(android.os.Process.myPid());}}}


更多相关文章

  1. Android和蓝牙GPS结合的方法
  2. [ ]在Android系统上使用busybox——最简单的方法
  3. Android中的文件的读取方法
  4. Android设备开机后自动启动APP解决方法:(学习篇)
  5. Android 文字自动滚动(跑马灯)效果的两种实现方法[特别好使]
  6. Android Fragment 生命周期及回调方法
  7. 部分 CM11 系统 Android 平板执行植物大战僵尸 2 黑屏的解决的方
  8. Android 在Service开启对话框的方法
  9. Android React Native在Android Studio中执行bundleReleaseJsAnd

随机推荐

  1. Android之PopupWindow弹出对话框
  2. 深入解析 Node.js 的 console.log[每日前
  3. 使用Azure Backup保护云端VM
  4. 2021最新发布:迈向高级的Java面试突围课
  5. 【开发者必看】移动应用趋势洞察白皮书-
  6. 关于 Git 的 20 个面试题[每日前端夜话0x
  7. 三子棋
  8. 怎样在 Linux 中配置静态网络连接[每日前
  9. 坚持写博客的第二天,在敲代码的时候时间过
  10. 使用 TypeScript 和依赖注入实现一个聊天