在我的应用程序中,我一个接一个地开始活动而没有完成任何活动,然后再打电话给另一个。但是当用户按下注销按钮时,我想完成堆栈中的所有活动并开始登录活动。
活动登录(完成和通话) - >活动B - >活动C - > 活动D - >登出 - > Acitivity Login。
如果用户在登录活动中按回了键,那么在我的情况下他会返回活动C ...但我想避免这种情况。
答案 0 :(得分:7)
你应该做的是调用Login
活动,并清除堆栈中它上面的所有活动。
Intent intent = new Intent(this, Login.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
这将标记它以创建新的登录活动,而不仅仅是恢复上一个活动。并清除其上方的所有活动。 (B,C,D)。
答案 1 :(得分:0)
我不知道它是否会有所帮助,但您可以尝试向您的清单声明的活动(B,C,D)添加以下标记:
android:noHistory='true'
应该从活动堆栈中删除活动并完成 (当用户离开它时,它的finish()方法被调用) 它在屏幕上不再可见
看看here。