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

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

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

[[225748]]

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

将异常信息发送到服务器

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

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

责任编辑:武晓燕 来源: Android开发中文站
相关推荐

2018-12-20 08:50:53

TCPIP服务器

2011-03-28 17:24:26

2010-01-11 13:05:24

VNC server配

2010-03-01 16:10:32

Linux Samba

2010-03-19 09:26:34

Java Socket

2012-05-07 13:55:41

JavaJava Web

2018-11-19 15:30:23

ChronyLinux命令

2023-04-26 07:36:44

缓存雪崩服务器架构

2009-02-12 15:51:00

squid代理服务器web服务器

2021-06-16 07:34:32

Pythonsocket库Python基础

2021-10-14 08:39:17

Java Netty Java 基础

2009-08-18 12:51:19

服务器+客户端

2011-06-09 10:51:26

Qt 服务器 客户端

2022-06-14 15:07:04

IPC客户端服务端

2010-08-26 10:01:50

DHCP服务器

2009-12-25 10:47:17

DNS服务器

2009-09-16 16:09:41

NIS服务器客户端NIS

2019-08-28 15:19:15

PythonTCP服务器

2018-12-19 10:31:32

客户端IP服务器

2018-12-18 10:47:37

点赞
收藏

51CTO技术栈公众号