解决Android出现闪退

Android项目中经常闪退(anr)原因有很多种,各种没有捕获的异常都会导致项目的崩溃,对于此问题除了在写代码是要考虑全面,并对可能出现 的Exception进行捕获,同时也可以设置一个全局异常捕获的机制来保证你的疏忽(对应该捕获的异常没有做处理)。具体步骤如下:

1、首先创建一个Handler 继承java.lang.Thread.UncaughtExceptionHandler:

//未捕获异常
    @Override
    public void uncaughtException(Thread thread, Throwable ex) {
             String threadName = thread.getName();
             ItktLog.d(threadName);
    //这里我们可以根据thread name来进行区别对待,同时,我们还可以把异常信息写入文件,以供后来分析        
    }
    //单例引用,这里我们做成单例的,因为我们一个应用程序里面只需要一个UncaughtExceptionHandler实例
    private static CrashHandler instance;  
       
    private CrashHandler(){}
  //同步方法,以免单例多线程环境下出现异常
    public synchronized static CrashHandler getInstance(){  
        if (instance == null){
            instance = new CrashHandler();
        }
        return instance;
    }
    //初始化,把当前对象设置成UncaughtExceptionHandler处理器
    public void init(Context ctx){
        Thread.setDefaultUncaughtExceptionHandler(this);
    }
   
2、在自定义Application的oncreate()方法中初始化:

CrashHandler handler = CrashHandler.getInstance();
        handler.init(getApplicationContext());



本文出自 “信诺集团技术中心” 博客,请务必保留此出处http://sinoteam.blog.51cto.com/9115640/1567452

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。