文章首先发表在http://www.hikyson.cn/archives/756
你可以在https://git.oschina.net/cocobaby/CrashReporter找到文章所指项目。
和其他博客类似的东西我就不赘述了。大多代码如下:
Thread.setDefaultUncaughtExceptionHandler(mUncaughtExceptionHandler);
说下注意点,尝试了一般方法,发现完全自己去处理崩溃的话,应用弹不出系统崩溃之类的dialog了,而是处于一个假死状态,这个让人不能忍。所以,我查阅了一些资料。把原来的逻辑改成了如下:
我在Thread.setDefaultUncaughtExceptionHandler(mUncaughtExceptionHandler);
之前先把系统默认的handler取出来,然后在public void uncaughtException(Thread thread, Throwable ex)
的最后使用系统的处理。
注意是最后!如果是之前的话进程似乎会被杀死,导致我们自己的逻辑执行不到了。
还有一点需要说明下,这个方式是全局的,setDefaultUncaughtExceptionHandler的api文档是这么写的:
Sets the default uncaught exception handler. This handler is invoked in case any Thread dies due to an unhandled exception.
所以其他线程也可以捕获异常。