美文网首页
Android全局异常捕获

Android全局异常捕获

作者: 四喜汤圆 | 来源:发表于2018-07-01 15:58 被阅读98次
    image.png

    重点

    1.对未手动捕获异常的处理类

    • 制作成单例类(因为整个应用程序中,只需要一个异常捕获类就够了)
    • 类实例中保存了Context(当异常发生时需要进行一些UI操作,可能会用到Context)
    • 该类中在静态内部类单例模式实现的单例类中:为实例变量赋值的方式值得参考
    import android.content.Context;
    
    /**
     * <pre>
     *     author : 杨丽金
     *     time   : 2018/07/01
     *     desc   : 全局异常捕获类
     * </pre>
     */
    public class CrashHandler implements Thread.UncaughtExceptionHandler{
        // 单例:整个应用程序中只需要一个异常捕获类就可以了
        // 上下文
        private Context mContext;
        private CrashHandler(){}
    
        @Override
        public void uncaughtException(Thread t, Throwable e) {
             // 出现未捕获异常时的处理办法
            // 在此可以把用户手机的一些信息以及异常信息捕获并上传,由于UMeng在这方面有很程序的api接口来调用,故没有考虑
    
            //干掉当前的程序
            android.os.Process.killProcess(android.os.Process.myPid());
        }
    
        private static class SingltonHolder{
            private static final CrashHandler instance = new CrashHandler();
        }
    
        public static CrashHandler getInstance(){
            return SingltonHolder.instance;
        }
    
        /**
         * 初始化变量
         * @param context
         */
        public void init(Context context) {
            this.mContext=context;
        }
    }
    
    

    2.在Application中把上述类设置为默认的未捕获异常处理类

    public class App extends Application {
        // 全局Context
        private static Context sContext;
    
        @Override
        public void onCreate() {
            super.onCreate();
            sContext = getApplicationContext();
            // 相关初始化
            init();
        }
    
        private void init() {
            CrashHandler handler=CrashHandler.getInstance();
            handler.init(context);
            Thread.setDefaultUncaughtExceptionHandler(handler);
        }
    
        /**
         * 得到全局Context
         * @return
         */
        public static Context getContext() {
            return sContext;
        }
    }
    

    参考文献

    Android全局异常处理

    相关文章

      网友评论

          本文标题:Android全局异常捕获

          本文链接:https://www.haomeiwen.com/subject/ugacuftx.html