【Android】Android Crash之异常信息反馈机制
来源:互联网 发布:led屏幕软件下载 编辑:程序博客网 时间:2024/06/10 10:52
转自http://blog.csdn.net/u010119170/article/details/38236991
1.为什么需要反馈Crash报告?
Crash最通俗直观的感受就是App软件出现崩溃导致的闪退等现象,在Android原生态下会出现一个App Force Close的Dialog,但是对于用户体验相当不好。Crash的产生是不可避免的,它产生的原因可能来自于Android底层的Bug,或是因为网络不畅,又或者是手机适配性问题,更严重的是代码质量不过关。Crash的产生是我们最不愿意看到的,即使我们花费大量时间进行测试,测试,再测试,bug还是会产生,为了能够获取到Crash信息,正式的软件中都会有Crash的反馈机制,开发人员会根据这些Crash信息对软件进行改进。
2.如何获取这些Crash信息?
1)首先,先看这样一个方法
这个方法可以设置系统的默认异常处理器,我们可以利用这个方法解决应用中常见的crash问题。当crash发生的时候,我们可以捕获到异常信息,把异常信息存储到SD卡中,然后在合适的时机通过网络将crash信息上传到服务器上,这样开发人员就可以分析用户crash的场景从而在后面的版本中修复此类crash。我们还可以在crash发生时,弹出一个通知告诉用户程序crash了,然后再退出,这样做比闪退要温和一点。
2)再看一个Java中的接口——UncaughtExceptionHandler
static interface
Thread.UncaughtExceptionHandler
当 Thread 因未捕获的异常而突然终止时,调用处理程序的接口。
我们可以实现这个接口,然后在这个接口中的uncaughtException(Thread thread, Throwable ex)方法中实现对Crash信息的捕获。
3.思路描述
4.具体实现
1)实现异常处理CrashHandler
2)获取手机及App软件等相关信息
3)为UI线程添加默认异常事件Handler
//Thread类中标识默认异常事件Handler的成员
private static UncaughtExceptionHandler defaultUncaughtHandler;
这里涉及到在哪里添加的问题,从源码中注意到,这个defaultUncaughtHandler是Thread类中一个静态的成员,所以,按道理,我们为任意一个线程设置异常处理,所有的线程都应该能共用这个异常处理器,这个是我的猜测,没有经过验证,不过没关系,有一个观点是大家都认可的:就是为主线程也就是ui线程添加异常程序器。为了在ui线程中添加异常处理Handler,我们推荐大家在Application中添加而不是在Activity中添加。Application标识着整个应用,在Android声明周期中是第一个启动的,早于任何的Activity、Service等。
4.测试代码
5.备注
日志的上传属于网络相关的内容,暂且不做专门介绍
参考:
1.http://blog.csdn.net/singwhatiwanna/article/details/17289479
2.http://www.cnblogs.com/draem0507/archive/2013/05/25/3099461.html
3.http://blog.csdn.NET/wangjia55/article/details/14000833
http://blog.csdn.net/zjucstzk/article/details/40046893
- 顶
- 0
- 踩
- 【Android】Android Crash之异常信息反馈机制
- 【Android】Android Crash之异常信息反馈机制
- 【Android】Android Crash之异常信息反馈机制
- 【Android】Android Crash之异常信息反馈机制
- android Crash之异常信息反馈机制
- Android Crash异常处理
- Android程序Crash异常处理
- Android 异常日志捕捉Crash
- Android 中Crash捕获异常
- Android Crash异常处理方法
- Android 程序添加Crash机制
- Android中的Exception,Crash机制
- Android crash之NoClassDefFoundError
- Android Crash之Java Crash分析
- Android Crash之Native Crash分析
- Android Crash之Java Crash分析
- android处理crash程序崩溃异常
- Android程序Crash时的异常上报
- Kafka实战-实时日志统计流程
- 服务器端API接口安全性分析
- LNMP一键安装包状态管理命令
- Python批量下载网页中的表格存储到CSV文件中
- lock compatibility / Lock Granularity and Hierarchies
- 【Android】Android Crash之异常信息反馈机制
- 学习Linux系统及服务器注意事项
- 贝叶斯分类和实例
- Memory Profiler:Python代码的内存分析器
- 什么是Spark
- XML反序列化实体类
- 谈谈redis主从复制的重点
- ffmpeg库介绍
- Notepad++快捷键 单行、多行、区块注释