Android:首次启动器活动仅在首次按HOME时重新创建为新任务

Tom*_*ask 5 android android-intent android-launcher android-homebutton android-task

我想阻止用户离开我的应用.我试图通过家庭启动器活动/应用程序实现这一点,我不明白android的行为.首次按HOME将始终在新任务中创建新活动,而不是将现有活动移动到前台.当第二次按HOME时,没有任何反应.见例子:

我有一个登录活动(A)和设置活动(B).B从A打开.A被设置为启动器(LAUNCHER,DEFAULT,HOME类别).

  1. A打开B.
    • 任务T1:A - > B.
  2. 另一个A被创建成一个新任务(为什么?):
    • T1:A - > B.
    • T2:A
  3. A打开B(任务T2)
    • T1:A - > B.
    • T2:A - > B.
  4. 没有任何反应,为什么

当A的launchModesingleTop,singleTaskstandard时,我得到相同的行为.使用singleInstance只有一个A,但B在T1中单独使用,我不希望这样.

为什么总会创建一个新任务?所有intents标志始终设置FLAG_ACTIVITY_NEW_TASK标志.为什么android会这样做?

这与此处此处发布的行为相同吗?我无法使用该解决方案,因为android创建了一个新任务,因此A将永远是根.(或者我如何检查这是第二个实例?)

我不能在这里发布使用singleInstance,因为我不希望B单独使用(如果A是可见的,它也是唯一的活动和任务(登录目的)).我试图通过ActivityManager删除所有其他任务,但是对于SDK> = 21,我的min是16.getAppTasks()

我甚至无法使用解决方案,因为我从未意识到FLAG_ACTIVITY_BROUGHT_TO_FRONT标志.始终存在FLAG_ACTIVITY_RESET_TASK_IF_NEEDED标志.

我已经尝试了很多与launchMode,clearTaskOnLaunch,noHistory的组合......但没有成功 - 总是新任务.

不知道怎么解决这个问题?在棒棒糖上运行.谢谢.