我的申请表如下:
一开始我有一些AppStartActivity
可以做某事,自己完成并在用户登录后启动MainActivity
,否则启动LoginActivity
。
LoginActivity
完成并启动MainActivity
。
在MainActivity
我有SomeActivity
用户可以退出。此情况的活动堆栈为MainActivity > SomeActivity
。这是正确的,后退按钮效果很好。当用户单击LogOut
按钮时出现问题。我需要显示LoginActivity
,但我不想再将MainActivity
和SomeActivity
放在活动堆栈上。
如果我不完成AppStartActivity
,我可以解决这个问题。我可以带着旗帜FLAG_ACTIVITY_CLEAR_TOP
返回,它会运作良好。但这是后退按钮的问题。我不希望用户使用后退按钮返回此活动。我想让它退出应用程序。
更新:
标志FLAG_ACTIVITY_NEW_TASK
和FLAG_ACTIVITY_CLEAR_TASK
最好,但我需要它在API级别9中工作。
答案 0 :(得分:1)
当用户想要注销时,您只需使用MainActivity
启动Intent.FLAG_ACTIVITY_CLEAR_TOP
,然后在Intent
中传递额外信息,告知MainActivity
用户已注销。 MainActivity
然后可以立即启动LoginActivity
并完成自己。
有关如何执行此操作的详细信息,请参阅我对Remove top activity from stack android的回答。
答案 1 :(得分:0)
如果我理解正确,您似乎只在finish()
中遗失SomeActivity
。
这种情况的堆栈是MainActivity> SomeActivity
点击LogoutButton
onClick(View v)
{
Intent i = new Intent(SomeActivity.this, LoginActivity.class);
i.setFlags(Intent.FLAG_ACTIVITIY_CLEAR_TOP);
startActivity(i);
finish();
}
这种情况的堆栈是LoginActivity
点击“返回”Button
退出应用
答案 2 :(得分:0)
一般的技巧是使用BroadcastReceiver
并广播你的所有活动“嘿,请完成(),因为用户正在退出”。这将清除您的活动堆栈,并阻止用户按回到您应用的“登录”部分。