我有一个具有如下启动流程的应用程序:
StartupActivity -> LoginDialog -> LoginActivity -> HomeActivity
当我从 LoginActivity 转到 HomeActivity 时,我调用:
Intent intent = new Intent( this, HomeActivity.class );
if( Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB )
{
intent.setFlags( Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK );
}
else
{
intent.setFlags( Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP );
}
startActivity( intent );
finish();
On >= API 11
,这使得它HomeActivity
是一个全新的任务,并且StartupActivity
不再在后台堆栈上。
但是,在 上API <= 10
,从后面的堆栈中FLAG_ACTIVITY_CLEAR_TOP | FLAG_ACTIVITY_SINGLE_TOP
清除了,但仍然存在。如果用户从 中单击返回,则会将他们带回到。LoginActivity
StartupActivity
HomeActivity
StartupActivity
如何从后台堆栈中清除 StartupActivity?
- 根据我的研究,似乎最好的方法是 startActivityForResult() 但我可以从对话框中做到这一点吗?谁会得到结果?
摘要:
- 从
StartupActivity
,我展示LoginDialog
。 - 从
LoginDialog
,我在LoginActivity
不清除后堆栈的情况下转到 。- 这是因为我希望用户能够
LoginActivity
从StartupActivity
.
- 这是因为我希望用户能够
- 从
LoginActivity
,我去HomeActivity
并清除后面的堆栈 - 按下返回仍然会回到
StartupActivity
打开状态devices <= API 10