Android如何清除活动堆栈?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (44)

我在我的应用程序中有几项活动。流程非常复杂。当我点击注销应用程序naviagates登录屏幕,并从那里用户可以通过取消buton(调用system.exit(0))退出,

当我退出或返回按钮时,系统从栈中调用一个活动:(当我到达登录屏幕时,如何清除堆栈中的所有活动?finish()由于有太多活动,因此调用不实际,因此有些活动不应该在他们是本地摄像头调用活动等活动:

validateuser logoutuser = new validateuser();
logoutuser.logOut();
Intent loginscreen = new Intent(homepage.this, Login2.class);
(homepage.this).finish();
loginscreen.setFlags( Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NO_HISTORY);
startActivity(loginscreen);
提问于
用户回答回答于

你们大多数人都错了。如果你想要关闭现有的活动堆栈而不管其中内容是什么并创建新的根目录,则正确的标志集合如下所示:

intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);

来自doc:

public static final int FLAG_ACTIVITY_CLEAR_TASK 在API级别11中添加 如果在传入的Intent中设置 Context.startActivity(),则此标志将导致在活动启动之前将与该活动关联的任何现有任务清除。也就是说,活动成为空的任务的新根,任何旧的活动都完成了。这只能与...一起使用FLAG_ACTIVITY_NEW_TASK

用户回答回答于

当你调用给startActivity你最后一次可以使用的活动时:

Intent.FLAG_ACTIVITY_CLEAR_TOP

扫码关注云+社区