Android очищает / завершает предыдущие действия, кроме одного

В android у меня есть следующий путь:

Действие 1 -> Действие 2 -> Действие 3 -> … Действие N -> нажмите кнопку …

Когда нажимается кнопка, я хочу очистить / закончить все действия от Activity 2 до N, а затем перейти к Acitivy X. Другими словами, я хочу закончить все действия до первого, а затем перейти к другому.

Если я использую флаги:

CLEAR_TOP, CLEAR_TASK, NEW_TASK и т. Д.

Теоретически это закончило бы ВСЕ предыдущие действия с первоначальным. Есть ли способ сохранить начальную жизнь и перейти к активности X?

Если вы уже посетили акт и не вызвали finish() при его удалении, сделайте это

 finish(); Intent mIntent = new Intent(Create_Your_Pizza.this, MainActivity.class); mIntent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);; mIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); startActivity(mIntent); 

Я не уверен, что понимаю этот вопрос. Вернее, причина того, что вы не можете использовать FLAG_ACTIVITY_CLEAR_TOP .

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

Например, рассмотрите задачу, состоящую из действий: A, B, C, D. Если D вызывает startActivity () с намерением, который разрешает компонент активности B, то C и D будут завершены, а B получит заданное намерение , В результате чего стек теперь составляет: A, B.

Если я правильно понимаю, это именно то, что вы хотите. В частности,

Действие 1 -> Действие 2 -> Действие 3 -> … Действие N -> нажмите кнопку …

Запуск намерения с Activity2.class и флагами FLAG_ACTIVITY_CLEAR_TOP | FLAG_ACTIVITY_SINGLE_TOP FLAG_ACTIVITY_CLEAR_TOP | FLAG_ACTIVITY_SINGLE_TOP вернется к существующему экземпляру Activity2 (вместо создания нового) и предоставит новое намерение в onNewIntent() . Вам просто нужно добавить дополнительное для этого намерения, чтобы этот метод знал, что он должен позже вызвать ActivityX.

То есть, если я не упустил что-то. 🙂