调用`uncaughtException`时关闭所有打开的活动

时间:2015-05-04 14:23:22

标签: android unhandled-exception uncaught-exception

我想要做的是,当有任何未处理的异常时,关闭所有打开的活动 我有一个BaseActivity,它是我的应用程序中的所有活动的基础,以及从该类派生的每个活动 我在setDefaultUncaughtExceptionHandler的{​​{1}}中致电onCreate

我有BaseActivity如下:

BaseActivity

这是我的错误屏幕活动:

public abstract class BaseActivity extends Activity 
{
    @Override
    public void onCreate(Bundle savedInstanceState) 
    {
        // Exceptions that are not handled are received in GlobalExceptionHandler class              
        Thread.setDefaultUncaughtExceptionHandler(new MyExceptionHandler());
    }

    public class MyExceptionHandler implements UncaughtExceptionHandler 
    {  
        @Override  
        public void uncaughtException(Thread thread, Throwable e) 
        {
            String report = "";

            // Code to generate report string
            ......
            // Code to generate report string

            // Start error screen 
            Intent intent = new Intent(mContext, ErrorScreen.class);
            intent.putExtra("error", report);
            intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET);
            intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
            startActivity(intent);

            // Exit
            System.exit(0);
        } 
    }
}

在任何unhandeled异常中,我的public class ErrorScreen extends Activity implements OnClickListener { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.error_screen_layout); // Display error report from intent } @Override public void onClick(View view) { switch(view.getId()) { case R.id.btn_exit_app: { // All this is not working // and few activities are still there finish(); android.os.Process.killProcess(android.os.Process.myPid()); System.exit(1); } break; } } } 函数被调用,这是预期的,然后我开始显示错误详细信息的新活动和在uncaughtException活动中退出的按钮。

但问题是,在选择退出应用程序按钮后,并非应用程序中的所有活动都关闭,仍然很少有活动打开,如何关闭所有打开的活动?

1 个答案:

答案 0 :(得分:0)

beforedrop

在您的应用程序类中编写此方法..