我有一个主要活动A.有两种情况
1)A发射B. B有launchmode singleTask,并使用FLAG_ACTIVITY_NEW_TASK启动。 现在我在B中有一个菜单选项,它执行删除操作并启动活动A.
2)A启动B,它启动C它还包含执行delet opereation的菜单选项。
我希望A开始在两个场景中清除堆栈,但属于另一个任务的活动仍然存在于那里 我被困了是否有办法清理堆栈。
答案 0 :(得分:1)
尝试在B和C活动的删除操作上使用以下代码
Intent intent=new Intent(B.this, A.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
答案 1 :(得分:0)
如果我谈论你的第二个场景,那么FLAG_ACTIVITY_TOP_CLEAR
将清除堆栈..
现在,您的筹码将仅为A
而不是A-B-C-A
。
并且在第二种情况下AFAIU你的问题你只有两个活动A和B所以如果你想重新启动A然后重新启动A手动完成B。
希望你有一些技巧。
如果你有launchmode=SingleTask
的活动,那么你可以使用flag_activity_brought_to_front。
That will act like
A-B-c到A
答案 2 :(得分:0)
为什么不在再次呼叫A之前完成B和C?
finish();
答案 3 :(得分:0)
我的方法无法达到您的目标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启动模式),你使用标志FLAG_ACTIVITY_RESET_TASK_IF_NEEDED
来启动B.这个标志将清除B和B的所有顶部。
希望这会对你有所帮助:)。