一、概述
现如今,Android手机越发的普及,手机的品牌与型号五花八门、Android版本的不同,在开发过程中运行良好的app到了发布上线后安装到某款手机上说不定就出现异常崩溃的现象,开发者不可能在所有的设备逐个调试,所以在apk发布上线后,如果出现了崩溃现象,应及时捕获该设备导致崩溃的日志信息,这对于版本维护bug修复帮助极大,那么如何在app出现crash的情况下捕获设备的参数和较详细的异常信息,并将其上传到服务器供开发人员分析与修复。
二、UncaughtExceptionHandler
通常会导致程序崩溃的异常,这些异常不能被捕获到,利用Thread.UncaughtExceptionHandler就可以捕获到这些异常。从名字就可以看出来UncaughtExceptionHandler是针对某个线程而言的,由于在Android编程中,大量使用线程,如果统一处理呢?因为主线程只有一个,我们可以在主线程作处理。
三、原理
既然知道利用UncaughtExceptionHandler类来实现捕获全局异常,那么在Android SDK中进入UncaughtExceptionHandler.class里我们只需要关注以下函数
很显然,在初始化CrashHandler时:
1.获取系统默认的UncaughtException处理器(getDefaultUncaughtExceptionHandler())
2.设置该CrashHandler为程序的默认处理器(setDefaultUncaughtExceptionHandler())
3.当发生Crash时会转入UncaughtException函数来处理相应的业务代码
四、实现过程
关键代码CrashHandler类
public class CrashHandler implements UncaughtExceptionHandler {
public static final String TAG = &#