android 程序错误全局处理

一、Application Crash Report for Android

转:http://www.chengyunfeng.com/2010/07/application-crash-report-for-android

你的Android程序是否会崩溃呢!是否有用户抱怨程序崩溃,但是您又收集不到崩溃时候的详细信息呢?是否希望给您的用户提供更好的用户体验呢?ACRA(Android程序崩溃报告)就是一个帮助您在程序崩溃时候收集信息的项目.

使用ACRA当您的程序崩溃的时候,可以发送一个崩溃报告到Google Doc中,然后您就可以查看程序崩溃时候系统的信息.

项目主页:http://code.google.com/p/acra/

使用文档:http://code.google.com/p/acra/wiki/ACRAHowTo

 

、 android 程序错误全局处理

转:http://blog.csdn.net/liangguohuan/archive/2010/11/19/6022419.aspx

本文将分析在程序出错的情况下如何收集相关的错误信息,并发送错误信息到服务器供开发者分析和调试程序。错误信息将成为您Debug的一把利刃,通过错误信息您可以最及时的掌握程序在各个系统版本和设备上的运行情况。 错误处理介绍 在一般情况下,OPhone程序出错都会出现如下一个提示对话框:

 

图一:OPhone默认出错提示

 

 

这种情况下,用户只有点击“强行关闭”来结束程序。当该对话框出现对用户来说是相当不友好的,本文中将会告诉您如何在程序出错时不显示该对话框。
随着OPhone设备和系统版本的增加,现在在不同设备和版本上调试程序越来越麻烦,开发者不可能购买所有的设备来逐个调试程序。如果程序在模拟器上运行正常但是到最终用户手中运行却出现了错误,这种情况下如果可以收集到程序错误堆栈信息和具体设备的信息,对开发者调试程序就有莫大的帮助了。
要收集错误信息,我们需要了解两个主要接口API的使用:android.app.Application 和java.lang.Thread.UncaughtExceptionHandler 。下面就对着两个API做简单介绍。

UncaughtExceptionHandler:线程未捕获异常控制器是用来处理未捕获异常的。如果程序出现了未捕获异常默认情况下则会出现上面所示的强行关闭对话框。在本文将实现该接口并注册为程序中的默认未捕获异常处理。这样当未捕获异常发生时,就可以做些异常处理操作,例如:收集异常信息,发送错误报告 等。

Application:在开发OPhone应用时都会和Activity打交道,而Application使用的就相对较少了。Application 在OPhone中是用来管理应用程序的全局状态的,比如载入资源文件。在应用程序启动的时候Application会首先创建,然后才会根据情况(Intent)来启动相应的Activity或者Service。在本文将在Application中注册未捕获异常处理器。

UncaughtExceptionHandler接口实现

首先创建一个OPhone项目(项目的创建请参考OPhoneSDN上的其他文章),本文示例项目名称为:CrashReporter ;包名为:org.goodev.cr;并创建一个默认的Activity名字为:ReporterTest。然后创建CrashHandler类实现UncaughtExceptionHandler接口,并实现其函数:public void uncaughtException(Thread thread, Throwable ex)。CrashHandler类实现了错误报告的主要处理逻辑,该类代码如下(在代码中会有详细注释来解释各种处理情况):

 

 

 

 

在上面CrashHandler实现中,当错误发生的时候使用Toast显示错误信息,然后收集错误报告并保存在文件中。 发送错误报告代码请读者自己实现。在uncaughtException函数中调用了Thread.sleep(3000);来让线程停止一会是为了显示Toast信息给用户,然后Kill程序。如果你不用Toast来显示信息则可以去除该代码。除了Toast外,开发者还可以选择使用Notification来显示错误内容并让用户选择是否提交错误报告而不是自动提交。关于Notification的实现请读者参考:NotificationManager。在发送错误报道的时候,可以先检测网络是否可用,如果不可用则可以在以后网络情况可用的情况下发送。 网络监测代码如下:

 

 

 

下面是在模拟器和笔者手机(Dell mini3i OPhone1.5系统)上收集的具体信息截图:

 

 

图二: 模拟器信息截图

图三:Dell mini3i 设备信息截图

 

 

 

Application 实现

实现一个自定义Application来注册CrashHandler. 代码如下:

 

 

 

 

 

在AndroidManifest.xml中注册

最后只要在AndroidManifest.xml中注册CrashApplication就可以了。代码如下:

 

 

 

 

总结:通过本文示例的方式,开发者可以在程序中收集详细的崩溃信息,从而为调试程序带来便利,如果您的程序还没有该功能赶快加入吧。crashReporter.zip中包含本文使用的项目文件及资源。

作者简介: 程云峰,网名icess,目前就职于杭州恒生电子研发中心,喜欢Java开源技术。
个人网站:http://www.chengyunfeng.com/ 

(声明:本网的新闻及文章版权均属OPhone SDN网站所有,如需转载请与我们编辑团队联系。任何媒体、网站或个人未经本网书面协议授权,不得进行任何形式的转载。已经取得本网协议授权的媒体、网站,在转载使用时请注明稿件来源。)


 

 

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值