Android崩溃异常后导致Fragment页面重叠问题

    在我们做项目过程中,难免会遇到App崩溃的情况,这时系统会自动重启我们的应用,但是这样也会导致一个问题,就是页面重叠。几乎必现,给用户造成的体验非常不好。虽然我们本质上是不应该让应用出现崩溃的。但是新发版的项目,谁也不敢保证一定不崩溃,一旦崩溃了,用户看见页面重叠了,就不好。困扰了很久,在网上查了很多资料,也终于解决,在此记录,方便下次遇到相同问题以便于解决。

首先在我们应用中自己定义的Application类中的onCreat方法中添加如下代码,用于系统捕获异常。

// 程序崩溃时触发线程  以下用来捕获程序崩溃异常
Thread.setDefaultUncaughtExceptionHandler(restartHandler); 

然后再通过如下方法重启app就可以解决页面重叠的问题。

 // 创建服务用于捕获崩溃异常
    private Thread.UncaughtExceptionHandler restartHandler = new Thread.UncaughtExceptionHandler() {
        public void uncaughtException(Thread thread, Throwable ex) {
            restartApp();//发生崩溃异常时,重启应用
        }
    };
    //重启App
    public void restartApp(){
        Intent intent = new Intent(this, MainActivity.class);
        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP);
        this.startActivity(intent);
        android.os.Process.killProcess(android.os.Process.myPid());  //结束进程之前可以把你程序的注销或者退出代码放在这段代码之前
    }

代码量不多,但是亲测有效。如果遇到相同问题的小伙伴,可以尝试用这种方式。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值