我有一个具有如下启动流程的应用程序:
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清除了,但仍然存在。如果用户从 中单击返回,则会将他们带回到。LoginActivityStartupActivityHomeActivityStartupActivity
如何从后台堆栈中清除 StartupActivity?
- 根据我的研究,似乎最好的方法是 startActivityForResult() 但我可以从对话框中做到这一点吗?谁会得到结果?
摘要:
- 从
StartupActivity,我展示LoginDialog。 - 从
LoginDialog,我在LoginActivity不清除后堆栈的情况下转到 。- 这是因为我希望用户能够
LoginActivity从StartupActivity.
- 这是因为我希望用户能够
- 从
LoginActivity,我去HomeActivity并清除后面的堆栈 - 按下返回仍然会回到
StartupActivity打开状态devices <= API 10