Как очистить стек истории активности при нажатии кнопки home?

Я пишу приложение, которое имеет два "режима"; один режим просмотра и один режим редактирования . Приложение раскрывает два основных/запускающих действия (скажем, A и D), которые, в свою очередь, имеют свои собственные цепочки действий (B, C и E, F соответственно). Два действия точки входа A и D открывают две иконки с отдельными ярлыками на главном экране, и эти две цепочки никогда не пересекаются, т.е. как только вы запустите приложение в режиме просмотра с активностью A, единственный маршрут, по которому вы можете ходить туда-сюда, это A, B, C, а если запустить приложение в режиме редактирования с активностью D, то единственная доступная цепочка активностей - D, E, F.

Теперь моя проблема заключается в том, что если запустить приложение, например. режиме просмотра (цепочка действий A, B, C) и нажать кнопку Home из любого действия в этой цепочке, я вернусь на главный экран (конечно), но если я затем снова запущу приложение в режиме редактирования (цепочка действий D, E, F), я попадаю на тот экран, на котором я находился при нажатии кнопки Home (то есть на экран, находящийся в неправильной цепочке) - это не та точка входа в режим редактирования, которая ожидается; активность D.

Как это решить?

Я пробовал различные комбинации android:noHistory, android:clearTaskOnLaunch и других атрибутов в AndroidManifest.xml для соответствующих активностей. Но они, похоже, влияют только на саму деятельность, а не на всю цепочку.

Я хотел бы удалить всю цепочку действий (A, B, C или D, E, F) из стека истории при нажатии кнопки Home, но при этом сохранить стек нетронутым, пока я нахожусь в цепочке (я хочу иметь возможность нажать кнопку назад, скажем, из действия B и перейти к действию A).

7
задан Vadim Kotov 27 October 2017 в 11:37
поделиться