Android 全局异常捕获

使用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);//初始化全局异常管理}

}

猜你喜欢

转载自blog.csdn.net/sunshine_0707/article/details/81317583