Предположим, что у нас есть две активности.
A - основная активность, то есть "домашняя пусковая установка включена" (правильные фильтры намерений и т. д.)
B — корневое действие задачи с указанием singleTask (может быть только один экземпляр этого действия) и с пользовательским признаком taskAffinity (чтобы отличить его от основного корня задачи).
Предположим, что B представляет задачу, т. е. действует только тогда, когда оно не завершено — вернуться к нему или запустить его снова из последних задач после завершения — не вариант.
В какой-то момент времени — A запускает B, чтобы начать новую задачу. Цель — удалить B из списка недавних задач, когда пользователь закончит B. Пользователь может перейти от B к другим задачам (используя долгое нажатие на дом), а затем вернуться к B, пока она не завершена. Запуск A из панели запуска не выводит B на передний план поскольку они имеют разное сходство задач.
Android распознает B как корень задачи, поэтому B виден e в списке недавних задач, даже если она завершена, и пользователь всегда может вернуться к ней. Это не решение - переместить B в одну задачу с A, потому что во время работы B пользователь должен иметь возможность переключаться между задачами A и B. Добавление excludeFromRecents в манифест B полностью удаляет его из списка последних задач, и это тоже плохое решение.
Как этого добиться? (извините за мой плохой английский)