android 处理器crash刊物
日志记录程序是为了方便各种异常情况,为了方便日后的维修方案进行维修,程序无法百分百健康,完美,有必要保存在日志中代码。易于维护。Java了一个接口UncaughtExceptionHandler,Thread.setDefaultUncaughtExceptionHandler(handler)设置当线程因为未捕获到异常而突然终止,而且没有为该线程定义其它处理程序时所调用的默认处理程序。
所以我们能够继承UncaughtExceptionHandler。 在handler实现对日志的读写
public class CrashHandler implements UncaughtExceptionHandler {
// 系统默认的UncaughtException处理
private Thread.UncaughtExceptionHandler mDefaultHandler;
public CrashHandler() {
mDefaultHandler = Thread.getDefaultUncaughtExceptionHandler();
}
@Override
public void uncaughtException(Thread thread, Throwable ex) {
try {
// 创建日志文件
File file = createCreashLogFile();
// 写入日志文件
if (file != null && file.exists()) {
writeLog(file, ex);
}
} catch (Exception e) {
LogUtils.w("", e);
}
// 将异常抛给系统处�?
mDefaultHandler.uncaughtException(thread, ex);
}
private void writeLog(File logFile, Throwable ex) {
PrintStream printStream = null;
FileOutputStream fos = null;
// 写入日志文件
try {
fos = new FileOutputStream(logFile);
printStream = new PrintStream(fos);
ex.printStackTrace(printStream);
} catch (Exception e) {
LogUtils.w("", e);
} finally {
closeQuietly(printStream);
closeQuietly(fos);
}
}
private void closeQuietly(OutputStream os) {
if (os != null) {
try {
os.close();
} catch (IOException e) {
LogUtils.w("", e);
}
}
}
/** 创建�?个空白的崩溃日志文件 */
public static File createCreashLogFile() throws IOException {
if (!isExternalStorageAvaliable()) { // �?
查存储是否可�?
return null;
}
File directory = new File(Environment.getExternalStorageDirectory()
+ "/ViolationQuery/crash_log");
if (!directory.exists()) {
directory.mkdirs();
}
File file = new File(directory, createCrashLogFileName());
if (file.exists()) {
file.delete();
}
file.createNewFile();
return file;
}
/** 存储是否可用 */
public static boolean isExternalStorageAvaliable() {
String state = Environment.getExternalStorageState();
if (Environment.MEDIA_MOUNTED.equals(state)) {
return true;
} else {
return false;
}
}
private static String createCrashLogFileName() {
String dateString = new SimpleDateFormat("yyyyMMdd_HHmmss",
Locale.getDefault()).format(new Date());
return "CrashLog_" + dateString + ".txt";
}
}
<pre name="code" class="java">public class CrashManager {
public static void start() {
// 设置异常处理实例
CrashHandler handler = new CrashHandler();
Thread.setDefaultUncaughtExceptionHandler(handler);
}
}
然后在Application中调用Application中CrashManager.start();这样就大功告成了
版权声明:本文博主原创文章。博客,未经同意不得转载。
android 处理器crash刊物的更多相关文章
- Android程序crash处理
Android程序crash处理 时间 2014-11-24 13:45:37 CSDN博客 原文 http://blog.csdn.net/allen315410/article/details ...
- Android Native crash日志分析
在Android应用crash的类型中,native类型crash应该是比较难的一种了,因为大家接触的少,然后相对也要多转几道工序,所有大部分对这个都比较生疏.虽然相关文章也有很多了,但是我在刚开始学 ...
- Android程序Crash时的异常上报
转载请注明来源:http://blog.csdn.net/singwhatiwanna/article/details/17289479 前言 大家都知道,android应用不可避免的会发生crash ...
- 获取Android崩溃crash信息并写入日志发送邮件
一.实现Thread.UncaughtExceptionHandlerUnChecked异常发生时,由于没有相应的try…catch处理该异常对象,所以Java运行环境将会终止,程序将退出,也就是我们 ...
- android 之 Crash信息的持久化处理
需求: 持久化运行时异常的信息 1.CrashHandler.java import android.content.Context; import android.content.pm.Packag ...
- Android Tombstone/Crash的log分析和定位
有一句话叫做常在河边走,哪有不湿鞋.我们这些研究和开发Android的project师正应了这句话,相必大家在调试的时候常常会遇到这么个东西吧 *** *** *** *** *** *** *** ...
- Android常见Crash原因总结(二)
Android平台程序崩溃大家都应该遇到过,force close和ANR应该是大家遇到较多的. 这里把Android平台程序崩溃的各种类型做一个简述和原因列举. 1.ANR(可见ANR): 发生场景 ...
- Android 常见Crash Log汇总
一.BinderProxy@4479b390 is not valid; is your activity running? 原因分析: 因为使用了AsyncTask 异步线程在线程完成以后的onPo ...
- Android常见Crash类型分析(一)
问题1. java.lang.IllegalStateException: The specified child already has a parent. You must call remo ...
随机推荐
- hdu4003(树形dp)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4003 题意:给定一棵n个节点的树,遍历每条数边都需要费用cost,现在给定k个机器人,要求用这个k个机 ...
- POJ3050 Hopscotch 【DFS】
Hopscotch Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 2113 Accepted: 1514 Descrip ...
- linux管理员
sudo password 添加管理员用户,设置其密码. exit 退出管理员.
- hdu5384(trie树)
hdu5384 给定n个字符串Ai 给定m个字符串Bi 问所有的Bi在每个Ai中出现了多少次 很显然,对Bi建Trie图,然后每次用Ai去匹配的时候,不断查找当前匹配串的最长后缀,这样就能找到答案了 ...
- Codeforces Round#310 div2
C题:这题说的是套娃,如果做题的时候知道是套娃,那就好理解多了 规则1:套娃A可以放到套娃B里面,当且仅当套娃B没有放在其他套娃里面 规则2:套娃A放在套娃B里面,且套娃B没有放在其他套娃里面,那么可 ...
- IOS开发-通知与消息机制
在多数移动应用中不论什么时候都仅仅能有一个应用程序处于活跃状态.假设其它应用此刻发生了一些用户感兴趣的那么通过通知机制就能够告诉用户此时发生的事情. iOS中通知机制又叫消息机制,其包含两类:一类是本 ...
- 不root的情况下 查看App的数据表
一直以来查看sqlite的数据库都须要root才干查看,可是公司的好多測试机root起来比較麻烦~~~ 近期刚好项目上线,略闲, 于是决定写一个libraryproject便于以后调试代码 关键代码例 ...
- The JSR-133 Cookbook for Compiler Writers(an unofficial guide to implementing the new JMM)
The JSR-133 Cookbook for Compiler Writers by Doug Lea, with help from members of the JMM mailing lis ...
- Cocos2d-x 地图步行实现1:图论Dijkstra算法
下一节<Cocos2d-x 地图行走的实现2:SPFA算法>: http://blog.csdn.net/stevenkylelee/article/details/38440663 本文 ...
- Ext4功能和文件系统的简单功能
Linux kernel 自 2.6.28 開始正式支持新的文件系统 Ext4. Ext4 是 Ext3 的改进版,改动了 Ext3 中部分重要的数据结构,而不只像 Ext3 对 Ext2 那样,不过 ...