首页 > 解决方案 > 捕获到全局异常时 UI 被阻塞

问题描述

在我的应用程序中,我尝试使用Thread.UncaughtExceptionHandler.

当我的应用程序发现任何未捕获的异常时,我会尝试在 Application 类和片段中全局捕获它。

我的应用程序在一个活动上有很多片段。如果它在任何片段中崩溃,我希望应用程序删除该片段,它应该显示前一个片段并且它可以按需要工作。但是UI(主线程)被阻塞了。如果我尝试访问主线程中的任何内容,它会显示一个对话框,显示“应用程序没有响应

@Override
    public void uncaughtException(Thread t, Throwable e) {
        System.out.println(TAG + "The Uncaught exception is-----------------------------------------------------------------------------");
        e.printStackTrace();
        if (activityContext != null){

            removeTopfragment();   //removes the top most fragment
        }
    }



private void removeTopfragment() {


        System.out.println("inside removeTopfragment");
        FragmentManager manger = activityContext.getSupportFragmentManager();

        FragmentTransaction ft = manger.beginTransaction();

        List<Fragment> list = manger.getFragments();
        //get last one
        if(list.size()  > 0) {

            System.out.println("inside list.size() ");
            Fragment topFragment = list.get(list.size() - 1);


            ft.remove(topFragment);
            ft.commitAllowingStateLoss();



        }

    }

我不想杀死/重新启动应用程序。请帮忙

标签: androiduncaught-exception

解决方案


推荐阅读