2016-09-02 1 views
0

Структура активности моего приложения может быть любой из следующих.Как я могу удалить все, кроме двух лучших действий в 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) Мне нужно, чтобы он возвращался к предыдущему действию (как это делает по умолчанию), поэтому завершение действий по ходу работы не сработает.

ответ

0

Всякий раз, когда вам не нужно Activity, добавляется на back stack, а при звонке New Activities with Intent просто позвоните finish() метод.

, например, Если последовательность вызова является

A -> B -> C -> D -> E

и, возвращаясь из Й он должен вернуться к B ,затем,

при запуске Activity D из Activity C затем вызвать finish() вместе с ним и при запуске Activity EActivity D от вызова finish() вместе с ним.

+0

Я должен указать, что мне действительно нужен «задний стек» до и до тех пор, пока конкретная опция не будет выбрана в действии D. Я отредактирую свой вопрос, чтобы включить это. – Shieldwall

Смежные вопросы