Очистить backstack в Android предварительно Honeycomb? - PullRequest
2 голосов
/ 30 декабря 2011

Существует ли простой способ или другой обходной путь удаления backstack в Android pre Honeycomb (до API уровня 11)? Люди предлагают использовать FLAG_ACTIVITY_CLEAR_TOP в сочетании с FLAG_ACTIVITY_NEW_TASK при запуске нового действия, но это только удаляет стек поверх моей текущей позиции, а не стек под моей позицией. Не должно быть так сложно начать с новой задачи. Некоторые идеи вокруг этого? Я не могу использовать FLAG_ACTIVITY_CLEAR_TASK, потому что мне нужно поддерживать эти версии ниже API-уровня 11. Есть ли эквивалент FLAG_ACTIVITY_CLEAR_TASK, который очищает весь навигационный backstack. Или что-то похожее на FLAG_ACTIVITY_REORDER_TO_FRONT, которое переупорядочивается назад, и тогда я могу очистить все, что на нем. Все предложения высоко ценятся :) Спасибо!

Ответы [ 3 ]

2 голосов
/ 30 декабря 2011

Вы также можете использовать широковещательный слушатель.

Просто сделайте широковещательный слушатель во всех действиях с «STRING» для распознавания.

Всякий раз, когда вы хотите удалить все действия, запускайте намерение.

Те действия, которые были зарегистрированы для вышеуказанного слушателя (которые будут выполняться в зависимости от того, какие действия вы хотите завершить), перехватят это и получат завершение.

Это сработает в любом выпуске Android.

1 голос
/ 30 января 2014

Вы ищете это:

Intent intent = new Intent(activity, activityClass);
ComponentName cn = intent.getComponent();
Intent mainIntent = IntentCompat.makeRestartActivityTask(cn);
activity.startActivity(mainIntent);

использовать Android-совместимость lib от Google - находится в SDK.

в зависимости от версии API также может быть:

Intent mainIntent = IntentCompat.makeMainActivity(cn);
1 голос
/ 30 декабря 2011

Почему бы вам не создать статический ArrayList всех предыдущих действий и очистить те, которые вам не нужны, когда вы захотите, с помощью activity.destroy ()

...