利用UncaughtExceptionHandler捕获全局异常
来源:互联网 发布:网页游戏编程入门 编辑:程序博客网 时间:2024/06/08 08:48
先了解一下UncaughtExceptionHandler这个类,它的名字叫做未捕获异常处理器,当系统出现未捕获异常时,系统默认会弹出强制关闭窗口,用户体验非常不好,我们可以实现这个接口,可以做一些自定义的界面,并可以把异常信息保存到文本中,发送到服务器,一遍我们发现bug
定义一个类,实现这个接口
public class ErrorHandler implements Thread.UncaughtExceptionHandler { private Thread.UncaughtExceptionHandler mDefaultHandler; private Context mContext; //用来存储异常信息 private Map<String, String> infos = new HashMap<String, String>(); //创建唯一对象 private static CrashHandler INSTANCE = new CrashHandler(); /** * 保证只有一个CrashHandler对象
*/ private CrashHandler() { } /** * 获取CrashHandler实例 */ public static CrashHandler getInstance() { return INSTANCE; } public void init(Context context) { mContext = context; //获取系统默认的UncaughtException处理器 mDefaultHandler = Thread.getDefaultUncaughtExceptionHandler(); //设置该CrashHandler为程序的默认处理器 Thread.setDefaultUncaughtExceptionHandler(this); } /** * 当未捕获异常发生时转入该函数来处理 * * @param thread * @param ex */ @Override public void uncaughtException(Thread thread, Throwable ex) { if (!handlerException(ex) && mDefaultHandler != null) { mDefaultHandler.uncaughtException(thread, ex); } else { try { Thread.sleep(3000); } catch (InterruptedException e) { Log.e("TAG", "error :", e); } android.os.Process.killProcess(android.os.Process.myPid()); System.exit(1); } } /** * 在这里面自定义处理异常 * * @param ex * @return */ private boolean handlerException(Throwable ex) { if (ex == null) { return false; } new Thread() { @Override public void run() { Looper.prepare(); Toast.makeText(mContext, "程序挂了,马上退出", Toast.LENGTH_LONG).show(); Looper.loop(); } }.start(); return true; }
在Application中初始化:
ErrorHandler errorHandler = ErrorHandler.getInstance(); errorHandler.init(getApplicationContext());
0 0
- 利用UncaughtExceptionHandler捕获全局异常
- 捕获全局异常UncaughtExceptionHandler
- 学习笔记之Android利用UncaughtExceptionHandler捕获全局异常
- 全局异常捕获(UncaughtExceptionHandler)
- Android使用UncaughtExceptionHandler捕获全局异常
- Android使用UncaughtExceptionHandler捕获全局异常
- Android使用UncaughtExceptionHandler捕获全局异常
- Android使用UncaughtExceptionHandler捕获全局异常
- Android使用UncaughtExceptionHandler捕获全局异常
- Android使用UncaughtExceptionHandler捕获全局异常
- Android使用UncaughtExceptionHandler捕获全局异常
- Android使用UncaughtExceptionHandler捕获全局异常
- Android使用UncaughtExceptionHandler捕获全局异常
- Android使用UncaughtExceptionHandler捕获全局异常
- Android使用UncaughtExceptionHandler捕获全局异常
- Android使用UncaughtExceptionHandler捕获全局异常
- Android使用UncaughtExceptionHandler捕获全局异常
- Android使用UncaughtExceptionHandler捕获全局异常
- 浙江省第四届“知识产权杯”创意设计大赛
- PAT (Basic Level)1041. 考试座位号
- SYDZ 辗转相除法的原理与实现
- 推酷
- Android的animation动画
- 利用UncaughtExceptionHandler捕获全局异常
- android 获取当前fragment单个对象(解决fragment返回键问题)
- iOS上线到APP Store流程
- 【电子签到】v1.0版本正式上线!免费下载!
- 如果测试自己的编译器打是大端还是小端
- State Threads
- 在PHP中调用接口
- s7500刷Android442
- viewWillAppear不执行