Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/218.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android:任务关联&;明确任务_Android_Android Navigation_Android Intent - Fatal编程技术网

Android:任务关联&;明确任务

Android:任务关联&;明确任务,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-无任务关

我有三个模块-模块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-无任务关联

Module B - 3 activities 
Navigation Case 1:
  • 主要活动
  • 在btn上单击-开始活动\u意图。标记\u活动\u新任务
  • 在btn上单击-启动活动
  • 在btn上单击-开始活动\u C
  • 在btn上单击-开始活动\u D Intent.FLAG\u活动\u清除任务\124; Intent.FLAG\u活动\u新建任务

    预期任务结果:
    任务com.performance.poc
    活动\u D
    主要活动

    任务com.performance.poc.main
    活动\u C
    活动B
    活动A

    预期:启动活动时,应清除任务com.performance.poc.main。 实际:活动A、活动B、活动C仍然存在,但主活动已清除


  • 主要活动
  • 在btn上单击-开始活动\u意图。标记\u活动\u新任务
  • 在btn上单击-启动活动
  • 在btn上单击-开始活动\u C Intent.FLAG\u活动\u清除任务| Intent.FLAG\u活动\u新建任务
  • 在btn上单击-开始活动\u D Intent.FLAG\u活动\u新建任务
  • 预期任务结果:

    任务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
    标志,如果是,将清除当前任务