关闭

应用异常终止时将错误发给服务器的原理

277人阅读 评论(0) 收藏 举报

    虽然我们的APP在发布之前会经过层层的测试,保证万无一失,但是人算不如天算,总有一些异常是没法避免的。所以,对于开发者而言,收集这些异常变得尤为重要了,处理这些异常可是我们的应用更加健壮。对于异常反馈的机制如下:

Thread类中有一个静态方法Thread.setUncaughtExceptionHandler(Thread.UncaughtExceptionHandler eh),当线程由于位被捕获的异常而突然终止的时候,就会调用传进去的Thread.UncaughtExceptionHandler接口,那么我就在这个接口的uncaughtException(Thread t, Throwable e)方法中手机放生的异常,上传到服务器。

通用做法:

一、创建一个类继承Application类,并在配置文件中配置

<application android:name="com.example.crashtest.app.CrashApplicaiton"/>


二、写一个类实现Thread.UncaughtExceptionHandler接口。

public static class CrashHandler implements UncaughtExceptionHandler{

private static final  CrashHandler INSTANCE = null;

public static CrashHandler getInstance(){

if(INSTANCE != null){

return INSTANCE;

}else{

return new CrashHandler();

}

}

public void init(){

Thread.setDefaultUncaughtExceptionHandler(this);

}

@Override

public void uncaughtException(Thread thread, Throwable ex) {

thread.interrupt();

System.out.println("程序崩溃了,请在此处进行处理");

//关闭打开的Activity,根据自己的需求在这里面进行具体的处理。

for(int i = 0;i<activitys.size();i++){

Activity act = activitys.get(i);

act.finish();

}

}

}


三、Application的onCreate()方法中初始化CrashHandler

@Override

public void onCreate() {

CrashHandler ch = CrashHandler.getInstance();

ch.init();

if(activitys == null){

activitys = new ArrayList<Activity>();

}

super.onCreate();

}



0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:3930次
    • 积分:122
    • 等级:
    • 排名:千里之外
    • 原创:4篇
    • 转载:5篇
    • 译文:4篇
    • 评论:0条