android捕获程序异常退出
今天看到迅雷动漫里面一个CrashHandler 的类,我猜是崩溃处理类。进去一看。果然。顺便学习一下。
Android系统的“程序异常退出”,给应用的用户体验造成不良影响。为了捕获应用执行时异常并给出友好提示,便可继承UncaughtExceptionHandler类来处理。
通过Thread.setDefaultUncaughtExceptionHandler()方法将异常处理类设置到线程上就可以。
代码:
public class CrashHandler implements UncaughtExceptionHandler {
private static final Logger LOG = Logger.getLogger(CrashHandler.class);
private final Application mApplication;
private Handler mUIHandler;
private Thread mUiThread;
public CrashHandler(Application app) {
mApplication = app;
mUIHandler = new Handler();
mUiThread = Thread.currentThread();
}
@Override
public void uncaughtException(Thread thread, Throwable e) {
LOG.error(e);
Throwable cause = e.getCause();
while (cause != null) {
LOG.error(cause);
cause = cause.getCause();
}
writeCrashInfoToFile(e);
if (Thread.currentThread() != mUiThread) {
mUIHandler.post(new Runnable() {
@Override
public void run() {
mApplication.onTerminate();
}
});
} else {
mApplication.onTerminate();
}
}
private void writeCrashInfoToFile(Throwable t) {
StringWriter sw = new StringWriter();
PrintWriter pw = new PrintWriter(sw);
t.printStackTrace(pw);
Throwable cause = t.getCause();
while (cause != null) {
cause.printStackTrace(pw);
cause = cause.getCause();
}
String crashInfo = sw.toString();
pw.close();
try {
if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
File file = mApplication.getApplicationContext().getExternalCacheDir();
if (file != null) {
file = FileUtils.getFile(file, "crash");
file.mkdirs();
FileUtils.writeStringToFile(FileUtils.getFile(file, "crash.log"), crashInfo);
}
}
} catch (IOException e) {
LOG.warn(e);
}
}
}
两个能够看的參考:
http://blog.csdn.net/hehe9737/article/details/7662123
http://blog.csdn.net/wangbole/article/details/8161524
代码是自己的。尽管简单,算我是原创吧。不然。真的非常难装逼。
android捕获程序异常退出的更多相关文章
- Android系统的“程序异常退出”[转]
在应用运行过程中,有很多异常可能会发生,而我们希望在异常发生的时候第一时间的保存现场. 如何处理未捕获的异常呢? 首先我们要实现一个接口 java.lang.Thread.UncaughtExcep ...
- Android捕获全局异常
Android捕获全局异常 程序避免不了出现bug,导致程序崩溃,为了尽量不影响用户体验,可以全局捕获异常 效果图 异常捕获处理前 异常捕获处理后(将程序重新启动) 捕获异常的工具类 package ...
- 程序异常退出 却没有产生core文件
程序异常退出 却没有产生core文件 http://www.cnblogs.com/my_life/articles/4107333.html
- Linux C程序异常退出怎么办——core文件帮你忙
Linux C程序异常退出怎么办——core文件帮你忙 http://blog.csdn.net/zhu2695/article/details/51512138
- main()如果返回0,则代表程序正常退出,返回非零代表程序异常退出。
读到这里,大家应该了解了main函数返回值的来龙去脉了.下面介绍一下main函数返回值的作用以及如何获得这个返回值.main函数的返回值用于说明程序的退出状态.如果返回0,则代表程序正常退出.返回其它 ...
- .NETCore在析构函数(Finalize)在Linux下引起程序异常退出现象
目 录 1. 现象概述... 1 2. 操作数据库的代码... 2 3. 引起的异常... 2 4. 异常信息分析... 3 5. 分析结 ...
- C#WinForm程序异常退出的捕获、继续执行与自动重启
本文参考网上搜索的信息,并做了适当修改可以让捕捉到异常之后阻止程序退出. 另给出了通过命令行自动重启的方法. 如果一个线程里运行下面的代码 ; / a; 将会导致程序自动结束,而且没有任何提示信息 但 ...
- Android捕获崩溃异常
开发中最让人头疼的是应用突然爆炸,然后跳回到桌面.而且我们常常不知道这种状况会何时出现,在应用调试阶段还好,还可以通过调试工具的日志查看错误出现在哪里.但平时使用的时候给你闹崩溃,那你就欲哭无泪了. ...
- Android企业级程序完全退出的解决方案
一.问题描述 在平常开发的过程中可以发现,很多开发者对于程序的退出都没有去认真的解决.一般要么是一个简单的finish(只是退出当前的activity),要么是其他的方法,比如: 1.第一种方法:首先 ...
随机推荐
- VC实现图片拖拽及动画
基础知识 1.PictureBox控件的使用 2.加载位图文件 1.通过文件路径获得位图句柄 //获得位图句柄 void CMovePictureDlg::GetHandleFromPath(CSt ...
- 数据挖掘之分类算法---knn算法(有matlab例子)
knn算法(k-Nearest Neighbor algorithm).是一种经典的分类算法.注意,不是聚类算法.所以这种分类算法 必然包括了训练过程. 然而和一般性的分类算法不同,knn算法是一种懒 ...
- sharepoint 2010 使用自定义列表模版创建列表(1)
我们在使用sharepoint的过程中,发现一个比较好用的功能,就是“将此列表另存为模版”(save list as template),这个功能的作用是,创建一个和当前列表或者文档库一模一样的配置, ...
- ORACLE 热备begin backup / end backup
执行begin backup之后,oracle会把将要备份的数据文件都标记为hot-backup-in-progress,锁定所要备份的datafile header的scn,例如此时scn=100, ...
- java命令行运行main时jar及其配置
run.bat中的内容如: set mypath=%cd%/../set classpath=%mypath%\conf;%mypath%\lib\*start /b java -Xms64m -Xm ...
- cassandra + lucene集成
Stratio’s Cassandra Lucene Index Stratio’s Cassandra Lucene Index, derived from Stratio Cassandra, i ...
- UVA 1613 K-Graph Oddity
题意; 在一个n个点的无向连通图中,n是奇数,k是使得所有点的度数不超过k的最小奇数,询问一种染色方案,使得相邻点的颜色不同. 分析: k=所有点中最大的入度.如果最大入度是偶数,则k+1.每个点可选 ...
- iOS设计模式解析(二)抽象工厂方法
抽象工厂方法:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类 与工厂方法区别: 抽象工厂通过对象组合创建抽象产品.工厂通过类集成创建抽象产品 抽象工厂创建多系列产品.工厂创建一种产 ...
- S5700交换机配置端口镜像
S5700交换机配置端口镜像 <Quidway>system-view //进入系统视图 Enter system view, return user view with Ctrl+ ...
- php学习网址
后面会陆续维护此页. 1. php编程 此博客是网站www.beilei123.cn镜像,转载请注明出处.