您的位置:首页 > 其它

统一管理程序异常

2015-11-01 19:21 429 查看
一、简介

本文介绍的是对程序异常的统一管理,当程序发生异常的时候,不会让用户看到原生的崩溃界面,我们可以自定义出更人性化的界面,同时可以把程序的异常信息返回给服务器。让我们可以轻松的维护程序,逐渐减少程序的bug,进而完善程序。

二、实现

import java.lang.Thread.UncaughtExceptionHandler;
import android.content.Context;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.os.Looper;
import android.support.v7.app.AlertDialog;
/**
*
* @author Richard
*
*/
public class CrashHandler implements UncaughtExceptionHandler {
public static final String TAG = "CrashHandler";
private static CrashHandler INSTANCE = new CrashHandler();
private Context mContext;
private Thread.UncaughtExceptionHandler mDefaultHandler;

private CrashHandler() {

}

public static CrashHandler getInstance() {
return INSTANCE;
}

public void init(Context ctx) {
mContext = ctx;
mDefaultHandler = Thread.getDefaultUncaughtExceptionHandler();
Thread.setDefaultUncaughtExceptionHandler(this);
}

@Override
public void uncaughtException(Thread thread, Throwable ex) {
System.out.println("uncaughtException");

new Thread() {
@Override
public void run() {
Looper.prepare();
new AlertDialog.Builder(mContext).setTitle("提示").setCancelable(false).setMessage("程序崩溃了...")
.setNeutralButton("我知道了", new OnClickListener()
// 完全退出程序需要把activity全部注册到一个数组中
{
public void onClick(DialogInterface dialog, int which) {
System.exit(0);
// 杀死线程,退出应用。
android.os.Process.killProcess(android.os.Process.myPid());
System.exit(1);
}
}).create().show();
Looper.loop();
}
}.start();
}

private boolean handleException(Throwable ex) {
if (ex == null) {
return true;
}
return true;
}
}


以上是自定义的异常处理器,于BaseApplication中,加入如下语句

CrashHandler crashHandler = CrashHandler.getInstance();
crashHandler.init(this);


然后让我们的activity继承与此baseativity即可。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  bug 管理 异常