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