现在我们的项目现在又一个需求,需要全局监听系统中的异常,然后当程序发生异常时记录下发生的异常,并上传到服务器,便于下一个版本修复这些问题,然后重启当前程序。
首先需要在Application中注册监听全局异常,
在Appliation 的onCreate()方法中加入下面方法
CrashHandler handler = CrashHandler.getInstance();
Thread.setDefaultUncaughtExceptionHandler(handler);
新建一个CrashHandler.java
package com.test.pack;
import android.content.Context;
import android.content.Intent;
import android.widget.TextView;
import java.io.PrintWriter;
import java.io.StringWriter;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
public class CrashHandler implements Thread.UncaughtExceptionHandler {
private static CrashHandler INSTANCE = new CrashHandler();
// 程序的 Context 对象
private Context mContext = MyApplication.getContext();
// 用于格式化日期,作为日志文件名的一部分
private DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
private CrashHandler() {
}
public static CrashHandler getInstance() {
return INSTANCE;
}
/**
* 当有未捕获异常发生,就会调用该函数,
* 可以在该函数中对异常信息捕获并上传
*
* @param thread 发生异常的线程
* @param ex 异常
*/
@Override
public void uncaughtException(Thread thread, Throwable ex) {