android捕获全局异常,CrashHandler
16lz
2021-12-04
package com.numob.david.util;import java.io.File;import java.io.FileWriter;import java.io.IOException;import java.lang.Thread.UncaughtExceptionHandler;import java.util.Date;import android.os.Environment;import android.util.Log;/** * 全局处理异常. * */public class CrashHandler implements UncaughtExceptionHandler { /** CrashHandler实例 */ private static CrashHandler instance; /** 获取CrashHandler实例 ,单例模式*/ public static CrashHandler getInstance() { if (instance == null) { instance = new CrashHandler(); } return instance; } @Override public void uncaughtException(Thread arg0, Throwable arg1) {// ScreenManager.getScreenManager().popActivity(Pay.activity);// arg0.stop();// arg0.destroy(); String logdir ; if(Environment.getExternalStorageDirectory()!=null){ logdir = Environment.getExternalStorageDirectory().getAbsolutePath()+ File.separator + "snda"+File.separator+"log" ; File file = new File(logdir);boolean mkSuccess;if (!file.isDirectory()) {mkSuccess = file.mkdirs();if (!mkSuccess) {mkSuccess = file.mkdirs();}}try {FileWriter fw = new FileWriter(logdir+File.separator+"error.log",true);fw.write(new Date()+"\n"); StackTraceElement[] stackTrace = arg1.getStackTrace(); fw.write(arg1.getMessage() + "\n"); for (int i = 0; i < stackTrace.length; i++) { fw.write("file:" + stackTrace[i].getFileName() + " class:" + stackTrace[i].getClassName() + " method:" + stackTrace[i].getMethodName() + " line:" + stackTrace[i].getLineNumber() + "\n"); }fw.write("\n");fw.close();} catch (IOException e) {Log.e("crash handler", "load file failed...", e.getCause());} } arg1.printStackTrace(); android.os.Process.killProcess(android.os.Process.myPid()); }}
Activity或是Application中加入这样的代码:
CrashHandler crashHandler = CrashHandler.getInstance();crashHandler.init(getApplicationContext());
今天只做简单介绍了。
更多相关文章
- 【阿里云镜像】切换阿里巴巴开源镜像站镜像——Debian镜像
- Android实现复制粘贴功能
- Android动态添加Fragment
- Android(安卓)从网上获取图片
- android 确认对话框实例
- android studio Listview简单实例
- 获取android所有联系人信息
- Android(安卓)WIFI 操作
- Android获取系统当前时区