在 android项目中,经常遇到程序出错导致闪退,在开发阶段还好,但是app上线了,如果程序发生错误,导致闪退,这样对用户体验非常不好,对于开发人员来说,只能预测那里出了问题,但不能准确定位。当然,可以集成第三方的SDK,比说腾讯的bulgy,但是对于一些特殊的行业,不能集成第三方的东西,那么就要自己写一个了。那就咬用到我们题目说的 UncaughtExceptionHandler了。
使用这个类 我们要自己写一个类来继承他,UncaughtExceptionHandler是一个接口,位于Thread类中。
public class CrashHandler implements Thread.UncaughtExceptionHandler {
private static CrashHandler sInstance = null;
private Thread.UncaughtExceptionHandler mDefaultHandler;
private Context mContext;
// 保存手机信息和异常信息
private Map<String, String> mMessage = new HashMap<>();
@Override
public void uncaughtException(Thread thread, Throwable throwable) {
}
}
我们要重写 他的 uncaughtException 方法,里面就是当app发生crash时的错误信息,我们可以将错误信息保存起来。
使用时,将其初始化
/**
* 初始化默认异常捕获
*
* @param context context
*/
public void init(Context context) {
mContext = context;
// 获取默认异常处理器
mDefaultHandler = Thread.getDefaultUncaughtExceptionHandler();
// 将此类设为默认异常处理器
Thread.setDefaultUncaughtExceptionHandler(this);
}
保存其信息
@Ov