public class CrashHandler implements Thread.UncaughtExceptionHandler {    private static final Format FORMAT = new SimpleDateFormat("yy-MM-dd HH-mm-ss",Locale.getDefault());                             private static CrashHandler instance = null;    private Thread.UncaughtExceptionHandler defaultHandler;    private Context context;    public static CrashHandler getInstance() {        if (instance == null) {            synchronized (CrashHandler.class) {                if (instance == null) {                    synchronized (CrashHandler.class) {                        instance = new CrashHandler();                    }                }            }        }        return instance;    }    private CrashHandler() {    }    public void init(Context context) {        this.context = context;        defaultHandler = Thread.getDefaultUncaughtExceptionHandler();        Thread.setDefaultUncaughtExceptionHandler(this);    }    @Override    public void uncaughtException(final Thread t, final Throwable e) {        if (e == null) {            android.os.Process.killProcess(android.os.Process.myPid());            System.exit(0);            return;        }        new Thread(new Runnable() {            @Override            public void run() {                saveCrashToLocal(t,e);            }        }).start();    }    private void saveCrashToLocal(Thread t,final Throwable e){        Date now = new Date(System.currentTimeMillis());        String fileName = "crash_" + FORMAT.format(now) + ".log";        final String fullPath = FileUtil.getInstance().getCrashPath() + "/" + fileName;        FileUtil.getInstance().createNewFile(fullPath);        PrintWriter pw = null;        try {            pw = new PrintWriter(new FileWriter(fullPath, false));            e.printStackTrace(pw);            Throwable cause = e.getCause();            while (cause != null) {                cause.printStackTrace(pw);                cause = cause.getCause();            }        } catch (IOException exc) {            exc.printStackTrace();        } finally {            if (pw != null) {                pw.close();            }        }        if (defaultHandler != null) {            defaultHandler.uncaughtException(t, e);        }    }}

 

更多相关文章

  1. 代码中设置drawableleft
  2. android 3.0 隐藏 系统标题栏
  3. Android开发中activity切换动画的实现
  4. Android(安卓)学习 笔记_05. 文件下载
  5. Android中直播视频技术探究之—摄像头Camera视频源数据采集解析
  6. 技术博客汇总
  7. android 2.3 wifi (一)
  8. AndRoid Notification的清空和修改
  9. Android中的Chronometer

随机推荐

  1. Android:LayoutAnimation、布局动画
  2. android 自定义字体
  3. Android通过串口与PC通信
  4. Android应用程序的安装位置
  5. 非UI线程可不可以更新UI(一)
  6. android GridView 去掉自带点击边框效果
  7. react-native-vector-icons(android)的安装
  8. android EditText 默认情况下不获取焦点(
  9. Android中为窗口定义主题
  10. Android中的Context