主界面
public class CrashHandel implements Thread.UncaughtExceptionHandler{
private static CrashHandel crashHandel;
private Context mContext;
private Thread.UncaughtExceptionHandler mexceptionHandler;
//获取CrasdHandel实例
public static synchronized CrashHandel getInstance(){
if (null == crashHandel) {
crashHandel = new CrashHandel();
}
return crashHandel;
}
public void init(Context context){
mContext = context;
mexceptionHandler = Thread.getDefaultUncaughtExceptionHandler();
//设置该CrashHandel为系统默认的
Thread.setDefaultUncaughtExceptionHandler(this);
}
@Override
public void uncaughtException(Thread t, Throwable e) {
//自己处理
}
/*
* 收集错误信息,发送到服务器
*
* @return 处理了该异常返回true,不处理返回false
* */
private boolean handleException(Throwable ex){
if (ex == null) {
return false;
}
//添加自定义信息
addToash();
//使用Toast来显示异常信息
new Thread(){
@Override
public void run() {
Looper.prepare();
Toast.makeText(mContext, "程序开小差了...", Toast.LENGTH_SHORT).show();
Looper.loop();
}
}.start();
return true;
}
/*
* 添加自定义参数
* */
private void addToash(){
Log.i(TAG, "addToash:程序出错了... ");
}
}
新建Activity调用全局异常捕获
public class MyApp extends Application {
@Override
public void onCreate() {
super.onCreate();
CrashHandel.getInstance().init(this);
}
}
最后记得在清单文件中进行调用
android:name=".app.MyApp"