why?
一、为什么要Crash
crash可以理解成堕落,垮台。按照我们通俗理解就是android App 因为不可预知的因素导致奔溃。
即使我们的程序发布前,经历了很多的测试,但是经过无数用户各种使用情况之后,可能会发生意想不到的crash.
为了及时反馈bug,通常我们都需要一个crash机制,以让开发人员尽快了解到问题所在,在下个版本中及时改进。
Application:这是android程序管理全局状态的类,Application在程序启动的时候首先被创建出来,它被用来统一管理activity、service、broadcastreceiver、contentprovider四大组件以及其他android元素,这里可以打开android工程下的Mainifest.xml文件查看一下。我们除了使用android默认的Application来处理程序,也可以自定义一个Application处理一些需要在全局状态下控制程序的操作,例如本文讲到的处理程序未知异常时,这是一种最佳实践。
Thread.UncaughtExceptionHandler:关于这个概念的解释,我在JDK1.6的文档中找到一些科学的解释。
当 Thread 因未捕获的异常而突然终止时,调用处理程序的接口。
当某一线程因未捕获的异常而即将终止时,Java 虚拟机将使用 Thread.getUncaughtExceptionHandler() 查询该线程以获得其 UncaughtExceptionHandler 的线程,并调用处理程序的 uncaughtException 方法,将线程和异常作为参数传递。如果某一线程没有明确设置其 UncaughtExceptionHandler,则将它的 ThreadGroup 对象作为其 UncaughtExceptionHandler。如果 ThreadGroup 对象对处理异常没有什么特殊要求,那么它可以将调用转发给默认的未捕获异常处理程序。
程序中未捕获的异常被及时捕捉到,保存在SD卡中,并且给用户良好的提示信息,被没有一下子crash掉,通过SD卡中的错误日志,我们可以很快定义到错误的根源,方便我们及时对程序进行修正。
友盟