Android崩溃分发流程
1.首先调用崩溃线程的dispatchUncaughtException方法进行异常分发处理,如下图,
首先会调用uncaughtExceptionPreHandler.uncaughtException方法进行异常处理,uncaughtExceptionPreHandler系统隐藏字段,无法设置和获取;
然后调用getUncaughtExceptionHandler方法获取我们设置的uncaughtExceptionHandler进行异常分发处理
2.下面来看getUncaughtExceptionHandler()方法,如下图:
首先会获取uncaughtExceptionHandler,也就是Thread.currentThread().setUncaughtExceptionHandler设置的handler
如果uncaughtExceptionHandler为空则调用线程组的uncaughtException进行异常处理
3.下面是线程组的uncaughtException方法:
如果父线程组不为空,则递归调用父线程组的uncaughtException
如果没有重写线程组,则最终都会调用到else条件中,调用到Thread.getDefaultUncaughtExceptionHandler()进行异常处理