在UI线程崩溃后彻底退出

时间:2014-12-14 23:10:07

标签: android uncaught-exception

我在Android代码中实现了UncaughtExceptionHandler。如果发生错误,它首先记录一些诊断数据,然后尝试退出。我已按照How to kill an application with all its activities?中的配方进行操作,以便活动在结束时级联。

当错误位于非UI线程中或主活动处于活动状态时,此方法有效。但是,如果在下级Activity上的UI线程上发生错误,则调用Activity永远不会唤醒。永远不会调用onActivityResult(),应用程序挂起。有没有办法在UI线程崩溃后彻底退出?

这是一个简化版本:

public void uncaughtException( final Thread t, final Throwable e )
{
    Activity ac = currentActivity();
    ac.setResult( 99 );
    ac.finish();
}

主要活动:

public boolean onOptionsItemSelected(MenuItem item)
{
    Intent intent = new Intent( getApplicationContext(), SettingsActivity.class );
    startActivityForResult( intent, 0 );
}

protected void onActivityResult( int rqC, int resultCode, Intent data )
{
    if ( resultCode == 99 )
    {
        setResult( 99 );
        finish();
    }
    super.onActivityResult( rqC, resultCode, data );
}

0 个答案:

没有答案