释放双眼,带上耳机,听听看~!
使用Android提供的全局异常捕获的方法
Thread.setDefaultUncaughtExceptionHandler(this);
它的意思是设置默认未捕获的异常处理handler,只要你的程序发生了异常,没有被处理,就会调用它来处理异常。
/**
* 全局异常捕获
*/
public class CrashHandler implements Thread.UncaughtExceptionHandler {
/**
* 系统默认UncaughtExceptionHandler
*/
private Thread.UncaughtExceptionHandler mDefaultHandler;
/**
* context
*/
private Myapplicaition applicaition;
/**
* 获取CrashHandler实例
*/
public static synchronized CrashHandler getInstance(){
if(null == mInstance){
mInstance = new CrashHandler();
}
return mInstance;
}
public void init(Myapplicaition applicaition){
this.applicaition = applicaition;
mDefaultHandler = Thread.getDefaultUncaughtExceptionHandler();
//设置该CrashHandler为系统默认的
Thread.setDefaultUncaughtExceptionHandler(this);
}
/**
* uncaughtException 回调函数
*/
@Override
public void uncaughtException(Thread thread, Throwable ex) {
Log.d("uncaughtException",ex.getMessage());
if(!handleException(ex) && mDefaultHandler != null){//如果自己没处理交给系统处理
mDefaultHandler.uncaughtException(thread,ex);
}else{
//自己处理
}
}
然后在继承application类中,实例化CrashHandler,并调用init函数
public class Myapplicaition extends Application {
@Override
public void onCreate() {CrashHandler.getInstance().init(this);//初始化全局异常管理}
}