protected static Context instance;
@Override public void onCreate() { super.onCreate();
instance = this; Thread.setDefaultUncaughtExceptionHandler(restartHandler); // 程序崩溃时触发线程 以下用来捕获程序崩溃异常
}
// 创建服务用于捕获崩溃异常 private Thread.UncaughtExceptionHandler restartHandler = new Thread.UncaughtExceptionHandler() { public void uncaughtException(Thread thread, Throwable ex) { Logger.d("------------------", "接受到异常"); if (!handleException(ex)) {// 如果用户没有处理则让系统默认的异常处理器来处理 Logger.d("-----------", "系统异常"); uncaughtException(thread, ex); } else { Logger.d("------------", "自己处理"); try { Thread.sleep(1100); } catch (InterruptedException e) { Log.e("slicejobs", "error : ", e); } Intent intent = new Intent(instance, MainActivity.class); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); instance.startActivity(intent); android.os.Process.killProcess(android.os.Process.myPid()); //结束进程之前可以把你程序的注销或者退出代码放在这段代码之前 } } }; /** * 自定义错误处理,收集错误信息 发送错误报告等操作均在此完成. * * @param ex * @return true:如果处理了该异常信息;否则返回false. */ private boolean handleException(Throwable ex) { if (ex == null) { return false; } // 使用Toast来显示异常信息 new Thread() { @Override public void run() { Looper.prepare(); Toast.makeText(CONTEXT.getApplicationContext(),"很抱歉,程序出现异常,1秒后重启.", Toast.LENGTH_SHORT).show(); Looper.loop(); } }.start(); return true; }