|
|
|
|
移动端

Android客户端项目全局异常处理和服务器数据保存

相信每一个Android开发人员都喜爱自己的工作,每天不停的生产代码,不停的解决Bug,乐在其中,不断的学习,不断的总结,我们应该积累出自己写代码的良好习惯,慢慢的,我们就会固定出完全属于自己的东西,下面是自己写项目时,碰到的一个问题,跟大家分享一下,有见解不到之处,还请大家指教,谢谢!

作者:佚名来源:Android开发中文站|2018-04-12 10:55

技术沙龙 | 邀您于8月25日与国美/AWS/转转三位专家共同探讨小程序电商实战

爱生活,爱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中一样,看到它具体是出在哪个类的哪一行,从而进行修改,非常好用,强力推荐!

将异常信息发送到服务器

拿到异常信息后,我们还可以搭建自己的服务器,收集异常信息,想怎么样保存,就看大家自己的习惯了!

我这里是拿到异常数据,保存到本地数据库了,如下示例。

【编辑推荐】

  1. 服务器被攻击了,有什么办法解决吗?
  2. 恶意软件GoScanSSH如何通过扫描SSH服务器暴力破解凭证进行传播
  3. 如何发现“利用DNS放大攻击”的服务器
  4. x86服务器4类常见问题汇总和故障案例
  5. 写一个HTTP服务器中遇到的一些问题
【责任编辑:武晓燕 TEL:(010)68476606】


点赞 0
分享:
大家都在看
猜你喜欢
24H热文
一周话题
本月最赞

视频课程+更多

热门职位+更多

读 书 +更多

JAVA并发编程实践

本书既能够成为读者的理论支持,又可以作为构建可靠的、可伸缩的、可维护的并发程序的技术支持。本书并不仅仅提供并发API的清单及其机制,...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊