Android:任务关联&;明确任务
我有三个模块-模块A,模块B,模块CAndroid:任务关联&;明确任务,android,android-navigation,android-intent,Android,Android Navigation,Android Intent,我有三个模块-模块A,模块B,模块C ModuleA - 1 activity MainActivity-无任务关联 Module B - 3 activities Navigation Case 1: 活动A task affinity=“com.performance.poc.main” 活动 task affinity=“com.performance.poc.main” 活动 task affinity=“com.performance.poc.main” 活动\u D-无任务关
ModuleA - 1 activity
MainActivity-无任务关联
Module B - 3 activities
Navigation Case 1:
活动A
task affinity=“com.performance.poc.main”
活动
task affinity=“com.performance.poc.main”
活动
task affinity=“com.performance.poc.main”
活动\u D-无任务关联
Module B - 3 activities
Navigation Case 1:
任务com.performance.poc
活动\u D
主要活动
任务com.performance.poc.main
活动\u C
活动B
活动A
预期:启动活动时,应清除任务com.performance.poc.main。 实际:活动A、活动B、活动C仍然存在,但主活动已清除
任务com.performance.poc
活动\u D
主要活动
任务com.performance.poc.main
活动\u 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.
我在这里的问题是,为什么在案例1中,即使活动A、活动B、活动C在同一个任务中,并且它没有清除这些活动和主要活动
清除任务应清除活动的现有任务,从该活动调用startActivity时有意向地执行新任务和清除任务。否则将清除目标活动的任务
If it is Target activity, I need to clear the task of the leaving activity, is there any way to do it?
设置
Intent.FLAG\u ACTIVITY\u CLEAR\u TASK
将清除目标任务
您说您需要清除当前任务。您可以通过使用中间活动
来完成此操作。只需创建一个简单的活动
,在onCreate()中执行以下操作:
此简单活动应具有与活动A、B和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
并完成,这将完成任务。设置Intent。标记活动\u clear\u task
将清除目标任务
您说您需要清除当前任务。您可以通过使用中间活动
来完成此操作。只需创建一个简单的活动
,在onCreate()中执行以下操作:
此简单活动应具有与活动A、B和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
并完成,这将完成任务。清单中的包名是什么?package=“com.performance.poc”以及当您说“无任务关联”(例如在MainActivity
上)你的意思是在
标签中没有android:taskAffinity
,对吗?是的。你是对的。该活动和应用程序标记也未添加taskAffinity属性。清单中的包名是什么?package=“com.performance.poc”当您说“无任务关联”(例如在MainActivity
)时,您的意思是
标记中没有android:taskAffinity
,对吗?是的。你是对的。该活动和应用程序标记也未添加taskAffinity属性。谢谢David。是否有任何意图标志,通过它我可以实现它?因为我有一个自定义类(导航控制器),它根据应用程序中的config.xml控制所有导航和清除活动。抱歉,没有。如果要将活动
启动到另一个任务中,则没有可以设置的意图
标志来清除当前任务。为此,您需要一个“委托”或“代理”活动,如我所述。还请注意,Intent.FLAG_ACTIVITY_CLEAR_TASK
仅在Android 3.0及更高版本上可用,因此您的应用程序不会在Android 2.2/2.3上运行(仍占设备安装基数的20%以上)。我将使用Intent.FLAG_ACTIVITY_CLEAR_TASK的支持库
意向i=新意向(此活动为C类);ComponentName cn=i.getComponent();Intent maintent=IntentCompat.makeRestartActivityTask(cn);星触觉(主旨);嗯,我不确定这是否行得通。文档表明这将重新启动根活动(在您的情况下,MainActivity
。由于您的应用程序有多个任务,这可能不是您想要的。此外,我不确定兼容性库中是否完全/正确模拟了FLAG\u ACTIVITY\u CLEAR\u TASK
的行为。请确保您测试了所有这些。此外,我希望您理解,如果您的应用程序有多个任务,它通常会被禁用。)用户很难进入主屏幕,然后使用最近的任务列表返回到您的应用程序。请确保您也测试了这些条件。谢谢David。是否有任何意图标志可以实现它?因为我有一个自定义类(导航控制器)它控制基于应用程序中的config.xml的所有导航和清除活动。抱歉,否。没有可以设置的Intent
标志,如果是,将清除当前任务