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