美文网首页Android
Android 程序异常提示重启应用

Android 程序异常提示重启应用

作者: DINGCHAO_ | 来源:发表于2019-04-09 17:30 被阅读0次

先贴工具类,此类可以保存手机报错设备信息,传到服务器等操作(自定义操作)

/**
 * @ClassName: UnCeHandler
 * @Description:程序异常退出工具类
 * @Author: dingchao
 * @Date: 2019/4/2 13:46
 */
    public class UnCeHandler implements Thread.UncaughtExceptionHandler {
        private Thread.UncaughtExceptionHandler mDefaultHandler;
        public static final String TAG = "CatchExcep";
        BaseApplication application;

        public UnCeHandler(BaseApplication application){
            //获取系统默认的UncaughtException处理器
            mDefaultHandler = Thread.getDefaultUncaughtExceptionHandler();
            this.application = application;
        }

        @Override
        public void uncaughtException(Thread thread, Throwable ex) {
            if(!handleException(ex) && mDefaultHandler != null){
                //如果用户没有处理则让系统默认的异常处理器来处理
                mDefaultHandler.uncaughtException(thread, ex);
            }else{
                try{
                    Thread.sleep(2000);
                }catch (InterruptedException e){
                    Log.e(TAG, "error : ", e);
                }
                Intent intent = new Intent(application.getApplicationContext(), MainActivity.class);
                @SuppressLint("WrongConstant") PendingIntent restartIntent = PendingIntent.getActivity(
                        application.getApplicationContext(), 0, intent, Intent.FLAG_ACTIVITY_NEW_TASK);
                //退出程序
                AlarmManager mgr = (AlarmManager)application.getSystemService(Context.ALARM_SERVICE);
                mgr.set(AlarmManager.RTC, System.currentTimeMillis() + 1000,
                        restartIntent); // 1秒钟后重启应用
                Tool.exitApp();
//                application.finishActivity();
            }
        }

        /**
         * 自定义错误处理,收集错误信息 发送错误报告等操作均在此完成.
         *
         * @param ex
         * @return true:如果处理了该异常信息;否则没有处理返回false.
         */
        private boolean handleException(Throwable ex) {
            if (ex == null) {
                return false;
            }
            //使用Toast来显示异常信息
            new Thread(){
                @Override
                public void run() {
                    Looper.prepare();
                    Toast.makeText(application.getApplicationContext(), "很抱歉,程序出现异常,即将退出.",Toast.LENGTH_SHORT).show();
//                    Tool.exitApp();
                    Looper.loop();
                }
            }.start();
            return true;
        }
    }

使用方法在BaseApplication中的onCreate中

 //程序异常退出重启
        UnCeHandler catchExcep = new UnCeHandler(this);
        Thread.setDefaultUncaughtExceptionHandler(catchExcep);

相关文章

网友评论

    本文标题:Android 程序异常提示重启应用

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