解决程序崩溃处理ANR

首先导入依赖

 compile 'com.wanjian:cockroach:0.0.5'


写入初始化的类

Cockroach.install(new Cockroach.ExceptionHandler() {
           // handlerException内部建议手动try{  你的异常处理逻辑  }catch(Throwable e){ } ,以防handlerException内部再次抛出异常,导致循环调用handlerException
            @Override  
            public void handlerException(final Thread thread, final Throwable throwable) {  
            //开发时使用Cockroach可能不容易发现bug,所以建议开发阶段在handlerException中用Toast谈个提示框,  
            //由于handlerException可能运行在非ui线程中,Toast又需要在主线程,所以new了一个new Handler(Looper.getMainLooper()),  
            //所以千万不要在下面的run方法中执行耗时操作,因为run已经运行在了ui线程中。  
            //new Handler(Looper.getMainLooper())只是为了能弹出个toast,并无其他用途  
                new Handler(Looper.getMainLooper()).post(new Runnable() {  
                    @Override  
                    public void run() {  
                        try {  
                        //建议使用下面方式在控制台打印异常,这样就可以在Error级别看到红色log  
                           Log.e("AndroidRuntime","--->CockroachException:"+thread+"<---",throwable);
                           // Toast.makeText(App.this, "Exception Happend\n" + thread + "\n" + throwable.toString(), Toast.LENGTH_SHORT).show();
//                        throw new RuntimeException("..."+(i++));  
                        } catch (Throwable e) {  
 
                        }  
                    }  
                });  
            }  
        });

Main方法写入的方法

  final Thread.UncaughtExceptionHandler uncaughtExceptionHandler = Thread.getDefaultUncaughtExceptionHandler();
        Thread.setDefaultUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() {
            @Override
            public void uncaughtException(Thread t, Throwable e) {
                //Log.e("AndroidRuntime", "--->uncaughtException:" + t + "<---", e);
                uncaughtExceptionHandler.uncaughtException(t, e);//若不把异常交给默认的异常处理器处理会导致ANR,交给了就会导致crash
            }
        });




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值