我在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 );
}