爱生活, 爱 Android! 相信每一个 Android 开发人员都喜爱自己的工作, 每天不停的生产代码, 不停的解决 Bug, 乐在其中, 不断的学习, 不断的总结, 我们应该积累出自己写代码的良好习惯, 慢慢的, 我们就会固定出完全属于自己的东西, 下面是自己写项目时, 碰到的一个问题, 跟大家分享一下, 有见解不到之处, 还请大家指教, 谢谢!
大家都知道, Android 是基于 Java 的, 本身会产生很多我们写代码时预料不到的异常, 而每一个异常都很可能导致我们的程序崩溃, 比如最常见的 NullException,ClassCastException,ClassNotFoundException,ANR 等等的, 而 Android 本身的 OS 会捕捉到这些异常, 在 dalvik 中处理, 然后退出程序, 退出的界面也很不友好, 在这种情况下, 我们就有了自己的想法, 如果我们能捕捉到这些异常, 就可以将其利用起来, 提升我们的应用质量, 我们可以在捕捉到异常后进行如下操作:
1, 定义自己的处理界面, 友好的展现给客户, 提高用户体验
2, 收集错误信息, 及时修改, 提高代码的稳定性
光从文字看起来, 这两点非常简单, 但是当你自己将异常处理机制布署在自己项目中时, 你就知道它对我们的项目带来多大的帮助!
下面来看一下, 如何给自己的项目中布署全局的异常处理, 步骤分为如下几步:
第一步, 注册 Application, 在开发应用时都会和 Activity 打交道, 而 Application 使用的就相对较少了. Application 是用来管理应用程序的全局状态的, 比如载入资源文件. 在应用程序启动的时候 Application 会首先创建, 然后才会根据情况 (Intent) 启动相应的 Activity 或者 Service. 本文将在 Application 中注册未捕获异常处理器.
第二步, 实现 UncaughtExceptionHandler,UncaughtExceptionHandler 是线程未捕获异常控制器, 用来处理未捕获异常的. 如果程序出现了未捕获异常默认情况下则会出现强行关闭对话框实现该接口并注册为程序中的默认未捕获异常处理 这样当未捕获异常发生时, 就可以做些异常处理操作 例如: 收集异常信息, 发送错误报告 等. 当程序发生 Uncaught 异常的时候, 由该类来接管程序, 并记录发送错误报告.
第三步, 异常处理操作的收集异常信息
第四步, 异常处理操作的本地保存异常报告
第五步, 异常处理操作的将异常信息发送到服务器
以上的五步, 若大体的分类的话, 只有第一步, 第二步, 后边的第三步, 第四步, 第五步都是在异常处理类中实现的, 只是因为它是具体的处理过程, 比较重要, 所以本文中单独列出来.
下面我们来看一下代码实现:
注册 Application
实现 UncaughtExceptionHandler
当出现异常时, 会进入 uncaughtException 方法处理, 我们所有的控制都可以加在这里
收集异常信息
本地保存异常报告, 这一步非常实用, 一些捕捉不到的异常, 我们可以通过这样的方式将它实例化, 保存在本地文件中, 里边的详细的信息, 我们可以像在 logcat 中一样, 看到它具体是出在哪个类的哪一行, 从而进行修改, 非常好用, 强力推荐!
将异常信息发送到服务器
拿到异常信息后, 我们还可以搭建自己的服务器, 收集异常信息, 想怎么样保存, 就看大家自己的习惯了!
我这里是拿到异常数据, 保存到本地数据库了, 如下示例.
来源: http://server.51cto.com/sOS-570368.htm