我有三个模块 - ModuleA,ModuleB,ModuleC
ModuleA - 1 activity
MainActivity - 无任务关联
Module B - 3 activities
Activity_A task affinity =“com.performance.poc.main”
Activity_B task affinity =“com.performance.poc.main”
Activity_C task affinity =“com.performance.poc.main”
Module C - 1 activity
Activity_D - 无任务关联
Navigation Case 1:
在btn上单击 - 启动Activity_D Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK
预期任务结果:
任务com.performance.poc
活动_
MainActivity
任务com.performance.poc.main
Activity_C
Activity_B
Activity_A
预期:在启动Activity_D任务时,应清除com.performance.poc.main。 实际:仍然活动_A,活动_B,活动_C仍然存在但MainActivity已清除。
Navigation Case 2:
预期任务结果:
任务com.performance.poc
活动_
MainActivity
任务com.performance.poc.main
活动_C
活动b
活动_A
Expected : on starting the Activity_C, in task com.performance.poc.main, Activity_A, Activity_B should be cleared.
Actual : Activity_A, Activity_B is cleared as expected.
我的问题就是为什么在Case1中,即使Activity_A,Activity_B,Activity_C在同一个任务中,也没有清除它们并清除MainActivity。
Clear_Task应该清除活动的现有任务,使用intent new_task和clear_task来调用startActivity。或者它将清除目标活动的任务。
If it is Target activity, I need to clear the task of the leaving activity, is there any way to do it?
答案 0 :(得分:4)
设置Intent.FLAG_ACTIVITY_CLEAR_TASK
将清除目标任务。
您说您需要清除当前任务。您可以使用中间Activity
来完成此操作。只需创建一个简单Activity
即可在onCreate()
中执行以下操作:
Intent = new Intent(this, ActivityD.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
finish();
此简单活动应与taskAffinity
具有相同的ActivityA, B and C
。
当ActivityC
想要启动ActivityD
时,它应该开始此活动,而不是这样:
Intent = new Intent(this, SimpleActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
startActivity(intent);
这将清除当前任务,然后SimpleActivity
将启动ActivityD
并完成,这将完成任务。