Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/222.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在注销android上完成多个活动_Android_Android Activity - Fatal编程技术网

如何在注销android上完成多个活动

如何在注销android上完成多个活动,android,android-activity,Android,Android Activity,在我的应用程序中,我一个接一个地开始活动,在调用另一个之前没有完成任何活动。但当用户按下注销按钮时,我希望完成堆栈中的所有活动并启动登录活动 活动登录(完成和调用)-->活动B-->活动C--> 活动D-->注销 -->活动登录 若用户在登录活动上按back键,那个么在我的例子中,他将返回活动C。。。但是我想避免这种情况。您应该做的是调用Loginactivity,并清除堆栈中它上面的所有活动 Intent intent = new Intent(this, Login.class); inte

在我的应用程序中,我一个接一个地开始活动,在调用另一个之前没有完成任何活动。但当用户按下注销按钮时,我希望完成堆栈中的所有活动并启动登录活动

活动登录(完成和调用)-->活动B-->活动C--> 活动D-->注销 -->活动登录


若用户在登录活动上按back键,那个么在我的例子中,他将返回活动C。。。但是我想避免这种情况。

您应该做的是调用
Login
activity,并清除堆栈中它上面的所有活动

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)。

我不知道这是否会有帮助,但您可以尝试在清单的声明活动(B,C,D)中添加以下标记:

android:noHistory='true'

该活动应从活动堆栈中删除并完成 (调用它的finish()方法)当用户离开它并 它在屏幕上不再可见


看一看。

谢谢@yugidroid,但我实际上不想完成我以前的活动,因为它已经从服务器下载了数据,如果我完成并返回,它将再次返回到它。。。所以我只想在注销时完成之前的所有活动。。。。。不管怎样,末日之王的解决方案对我来说是有效的,当我用FLAG_ACTIVITY_CLEAR_TOP替换FLAG_ACTIVITY_CLEAR_TASK时,它就起作用了