Структура активности моего приложения может быть любой из следующих.Как я могу удалить все, кроме двух лучших действий в Android?
Вариант 1: A> B> B> B> D
Случай 2: A> B> D
Вопрос 3: А> В> B> B> C> D
Существует вариант в активность D, что при выборе я хотел бы закончить с этим в стеке:
A> B
Где, в идеале, B - новый экземпляр этой деятельности. Сначала я подумал, что нашел свое решение в ACTIVITY_FLAG_CLEAR_TOP
, которое работает в случае 2. Однако в любом случае 1 или случай 3 он заканчивается тем, что все операции «underbelly» B остаются неизменными. A> B> B> B.
Чистящий интернет я нашел потенциальное решение временного решения с помощью ACTIVITY_FLAG_CLEAR_TOP
и ACTIVITY_FLAG_SINGLE_TOP
и с помощью, чтобы начать деятельность A и захватывая дополнительные в onNewIntent или OnCreate методы, чтобы немедленно начать экземпляр активность B.
Однако это кажется мне неудобным, кодовым. Особенно учитывая, что активность A - это рабочий стол, который должен (из интуитивного потока вещей) получить доступ только при переключении между учетными записями (технически говоря, персонажи, так как это игра).
Другим обходным решением, которое, как я думал, является вставка активности экрана загрузки между A и B, которую я могу «вспомнить» и перезапустить B. Тем не менее, это также кажется немного тупым, потому что это простое приложение, и на самом деле нет ничего, что требует времени загрузки. Кроме того, есть возможность поместить все действия из Activity B вперед в новую задачу, но это кажется еще более тупым и ненужным.
TLDR: Существуют ли какие-либо другие способы, позволяющие очистить весь стек, кроме A, и новую активность B? Или ответ, который я обречен использовать обходной путь.
EDIT: мне нужен back stack
до и до тех пор, пока пользователь не выберет конкретную опцию в действии D. Например, если они просто нажимают на обратный ключ в действии D или в одном из видов B (или C) Мне нужно, чтобы он возвращался к предыдущему действию (как это делает по умолчанию), поэтому завершение действий по ходу работы не сработает.
Я должен указать, что мне действительно нужен «задний стек» до и до тех пор, пока конкретная опция не будет выбрана в действии D. Я отредактирую свой вопрос, чтобы включить это. – Shieldwall