android捕获全局异常,CrashHandler

来源:互联网 发布:python split忽略空格 编辑:程序博客网 时间:2024/05/24 06:41
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());


今天只做简单介绍了。


原创粉丝点击