import android.os.Build;
import android.os.Looper;
import android.os.SystemClock;
import android.util.Log;
import android.widget.Toast;
公共类CrashHandler实现Thread.UncaughtExceptionHandler {
public Thread.UncaughtExceptionHandler defaultUncaughtExceptionHandler; //系统默认的未捕获异常的处理器
//懒汉式:
private CrashHandler(){};
private static CrashHandler instance = null;
public static CrashHandler getInstance(){
if(instance == null){
instance = new CrashHandler();
}
返回实例;
}
public void init(){
defaultUncaughtExceptionHandler = Thread.getDefaultUncaughtExceptionHandler();
//将当前的类,作为出现未捕获异常时的处理类.Thread.setDefaultUncaughtExceptionHandler
(this);
}
//当程序执行过程中,一旦出现未被捕获的异常时,即调用如下的回调方法
@覆盖
公共无效uncaughtException(线程线程,Throwable的前){
// Log.e( “TAG”,“出现异常了!异常信息为:“+ ex.getMessage());
//
新闻Thread(){
public void run(){
// android系统中,默认情况下,线程是不可以开启Looper进行消息的处理的,除非是主线程
.Looper.prepare();
// Toast的操作属于更新界面的操作,必须放在主线程中执行
Toast.makeText(UIUtils.getContext(),“亲,出现异常了!店小二正在努力修复”,Toast.LENGTH_SHORT).show();
Looper.loop();
}
}。开始();
//收集用户出现的异常信息,并发送给后台
collectionException(前);
SystemClock.sleep(2000);
//移除栈空间中所有的activity
ActivityManager.getInstance().removeAll();
//结束当前的进程
android.os.Process.killProcess(android.os.Process.myPid());
//结束当前的虚拟机的执行
System.exit(0);
}
private void collectionException(Throwable ex) {
final String exception = ex.getMessage();
//收集用户手机的设备信息
final String message = Build.DEVICE +“:”+ Build.MODEL +“:”+ Build.PRODUCT +“:”+ Build.VERSION.SDK_INT;
//模拟联网操作
new Thread(){
public void run(){
Log.e(“TAG”,“exception =”+ exception +“,message =”+ message);
}
}。开始();
}
}