您的位置:首页 > 移动开发 > Android开发

android 自定义全局未处理异常捕获器

2013-12-13 00:00 495 查看
摘要: android 自定义全局未处理异常捕获器

1:异常处理捕获类

package com.oa.main.common.tool;

import android.content.Context;
import android.util.Log;

/**
* 自定义全局未处理异常捕获器
* Created  on 13-12-13.
*/
public class CrashHandler implements Thread.UncaughtExceptionHandler {

private static CrashHandler instance;  //单例引用,这里我们做成单例的,因为我们一个应用程序里面只需要一个UncaughtExceptionHandler实例

private CrashHandler() {
}

public synchronized static CrashHandler getInstance() {  //同步方法,以免单例多线程环境下出现异常
if (instance == null) {
instance = new CrashHandler();
}
return instance;
}

public void init(Context ctx) {  //初始化,把当前对象设置成UncaughtExceptionHandler处理器
Thread.setDefaultUncaughtExceptionHandler(this);
}

public void uncaughtException(Thread thread, Throwable ex) {  //当有未处理的异常发生时,就会来到这里。。
Log.d("----------------捕获异常-------------!", "uncaughtException, thread: " + thread
+ " name: " + thread.getName() + " id: " + thread.getId() + "exception: "
+ ex);
String threadName = thread.getName();
//这里我们可以根据thread name来进行区别对待,同时,我们还可以把异常信息写入文件,以供后来分析。
//        if ("sub1".equals(threadName)) {
//        } else if () {
//        }
}

}


二:设置全局Application

public class ApplicationTrans extends Application {

@Override
public void onCreate() {
super.onCreate();
CrashHandler handler = CrashHandler.getInstance();
handler.init(getApplicationContext()); //在Appliction里面设置我们的异常处理器为UncaughtExceptionHandler处理器
}
}


三:在androidManifest中配置全局

<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/activityTheme"
android:name=".common.entity.ApplicationTrans"
android:debuggable="true">


到此自定义捕获未处理异常结束!

后续有很多开发填坑的文章发布,如果对你有帮助,请支持和加关注一下

http://e22a.com/h.05ApkG?cv=AAKHZXVo&sm=339944
https://shop119727980.taobao.com/?spm=0.0.0.0
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息