繁体   English   中英

清除堆栈,包括不同任务中的活动

[英]Clearing stack including activities in different tasks

我有一个主要活动A.有两种情况

1)启动B. B启动模式singleTask并使用FLAG_ACTIVITY_NEW_TASK启动。 现在我在B中有一个菜单选项,它执行删除操作并启动活动A.

2)A启动B,它启动C它还包含执行delet opereation的菜单选项。

我希望A开始在两个场景中清除堆栈,但属于另一个任务的活动仍然存在于那里我被卡住有一种方法来清除堆栈。

尝试在B和C活动上使用以下代码删除操作

    Intent intent=new Intent(B.this, A.class);
    intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    startActivity(intent);

如果我谈论你的第二个场景,那么FLAG_ACTIVITY_TOP_CLEAR将清除堆栈..

而你的筹码现在只有A而不是ABCA

在第二种情况下AFAIU你的问题你只有两个活动A和B所以如果你想重启A然后重启后A手动完成B.

希望你有一些技巧。

另外一件事,如果你有launchmode=SingleTask活动,那么你可以使用flag_activity_brought_to_front。

That will act like 

ABc到A.

为什么不在再次呼叫A之前完成B和C?

finish();

我的方法无法满足你的目标A to be started with clearing the stack ,但当用户选择delet opereation并再次从A启动B时,包含A和B的任务将被重置。

当你第一次从A开始活动B时,使用标志FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET标记任务将在需要时清除,然后如果用户从B或C中选择delet opereation菜单项,你设置一个标志,所以下次从A(A应该是single_task)在manifest中启动模式),你使用标志FLAG_ACTIVITY_RESET_TASK_IF_NEEDED来启动B.这个标志将清除B和B的所有顶部。

希望这个能对您有所帮助 :)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM