Невозможно выполнить то, что вы хотите, используя флаги Intent.
Причина в том, что работает FLAG_ACTIVITY_REORDER_TO_FRONT
. Когда вы используете этот флаг, Android ищет экземпляр требуемой активности в вашем стеке активности, начиная с передней части стека и сканируя до тех пор, пока он не достигнет корня/задней части стека. Как только он находит экземпляр указанного действия, он выводит его на передний план (т. Е. Если есть несколько экземпляров указанного действия, он будет выводить на передний план самый последний экземпляр).
В вашем случае стек деятельности выглядит следующим образом:
A1, B, A2 (front of task)
При попытке реорганизовать свою активность А, Android находит экземпляр A2 первым и упорядочивает, что на переднюю части задачи. Конечно, это было уже впереди задачи, поэтому на самом деле это ничего не делает.
Конечно, вы уже вызвали finish()
, и вы попробовали (с помощью FLAG_ACTIVITY_PREVIOUS_IS_TOP
) сообщить Android, что он не должен учитывать текущую активность при принятии решения о том, что делать, но это все игнорируется. Android видит A2 как самый последний экземпляр активности A и переустанавливает его на передний план. Затем A2 завершается, и действие B становится перед задачей. Пользователь видит «B» и стек активность:
A1, B (front of task)
Вам нужно найти другой способ для достижения желаемых результатов (так как этот пост почти 2 лет я предполагаю, что вы уже нашли другие путь).
Я сделал новый класс, расширив класс А. – Kai
Спасибо большое за хорошее объяснение – Simcha