Я пишу приложение, которое имеет два «режима»; один режим просмотра и один режим редактирования. Приложение предоставляет два основных действия/активности запуска (скажем, A и D), которые, в свою очередь, имеют свои собственные цепочки действий (B, C и E, F соответственно). Два действия точки входа A и D отобразят два значка с отдельными метками на главном экране, и две цепочки никогда не пересекаются, т. е. после запуска приложения в представлении режиме с действием A, единственный маршрут, по которому вы можете ходить туда и обратно, — это A, B, C, и если вы запускаете приложение в режиме редактирования с действием D, единственная доступная цепочка действий — D, E, F .
Теперь моя проблема в том, что если запустить приложение, например. режим просмотра (цепочка действий A, B, C) и нажмите кнопку «Домой» в любом действии в этой цепочке. Я возвращаюсь на главный экран. (конечно), но если я затем перезапущу приложение в режиме редактирования (цепочка действий D, E, F), я попаду в действие, которое я выполнял при нажатии кнопки «Домой» (то есть действие в неправильной цепочке) — не ожидаемая точка входа для режима редактирования; активность D.
Как решить эту проблему?
Я пробовал различные комбинации android:noHistory
, android:clearTaskOnLaunch
и других атрибутов в AndroidManifest.xml
для задействованных действий. Но они, похоже, влияют только на саму деятельность, а не на всю цепочку.
Я хочу удалить всю цепочку действий (A, B, C или D, E, F) из стека истории при нажатии кнопки «Домой», но при этом сохранять стек неповрежденным, пока я все еще в цепочке (я хочу иметь возможность нажать кнопку «Назад» от, скажем, действия B и перейти к действию A).