今天能写这个对我来讲有点晚,但也不晚;晚的是做android开发已经四年了,才注意到这个现象,才会这个知识点确实很晚;不晚的是,学习东西不怕晚,就怕不学;
其实Crash异常并不害怕,因为它很好解决,关键是用户在使用的过程中出现Crash给用户很坏的体验,给人一种很low的感觉!
捕获异常也不难主要有以下几个步骤:
1、写一个类实现Thread.UncaughtExceptionHandler;
2、写一个Application,注册自己的UncaughtExceptionHandler;
3、对自己捕获的异常进行处理;
具体如下:
1、实现自己的crashHandler
public class CrashHandler implements UncaughtExceptionHandler {
//系统默认的UncaughtException处理类
private Thread.UncaughtExceptionHandler mDefaultHandler;
//CrashHandler实例
private static CrashHandler INSTANCE = new CrashHandler();
//程序的Context对象
private Context mContext;
/** 保证只有一个CrashHandler实例 */
private CrashHandler() {
}
/** 获取CrashHandler实例 ,单例模式 */
public static CrashHandler getInstance() {
return INSTANCE;
}
/**
* 初始化
*
* @param context
*/
public void init(Context context) {
mContext = context;
//获取系统默认的UncaughtException处理器
mDefaultHandler = Thread.getDefaultUncaughtExceptionHandler();
//设置该CrashHandler为程序的默认处理器
Thread.setDefaultUncaughtExceptionHandler(this);
}
/**
* 当UncaughtException发生时会转入该函数来处理
*/
@Override
public void uncaughtException(Thread thread, Throwable ex) {
if (!handleException(ex) && mDefaultHandler != null) {
//如果用户没有处理则让系统默认的异常处理器来处理
mDefaultHandler.uncaughtException(thread, ex);
} else {
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
Log.e(TAG, "error : ", e);
}
//退出程序
android.os.Process.killProcess(android.os.Process.myPid());
System.exit(1);
}
}
以上为不完整的例子,大概描述了怎么使用;
2、写一个自己的Application
public class CrashApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
CrashHandler crashHandler = CrashHandler.getInstance();
crashHandler.init(getApplicationContext());
}
}
3、处理捕获到的异常信息
得到了信息怎么处理就由你了,一般是向服务器上传,然后你可以根据异常信息进行修改!
文章写的有些粗糙,切勿介意,可提出建议,后面进行修改!Thanks