Я знаю, что уже есть принятый ответ, но я не понимаю, как он работает для OP, потому что я не думаю, что FLAG_ACTIVITY_CLEAR_TOP имеет смысл в его конкретном случае. Этот флаг имеет отношение только к действиям в той же задаче . Исходя из его описания, каждое действие выполняет в своей задаче : A, B и браузер.
Что-то, что может его оттолкнуть, это то, что A - это однократная, тогда как это должна быть однократная задача. Если A - singleTop, и B запускает A, то будет создан новый A, потому что A не находится в задаче B. Из документации для singleTop:
"Если экземпляр действия уже существует в начале текущей задачи , система направляет намерение этому экземпляру ..."
Поскольку B запускает A, текущая задача является задачей B, которая предназначена для единственного экземпляра и, следовательно, не может включать A. Используйте singleTask для достижения желаемого результата, потому что тогда система найдет задачу, которая имеет A, и переведет эту задачу в передний план.
Наконец, после того, как B запустил A, и пользователь нажал назад от A, OP не хочет видеть ни B, ни браузер. Для этого вызов метода finish () в B верен; Опять же, FLAG_ACTIVITY_CLEAR_TOP не удалит другие действия в задаче А, потому что все остальные его действия находятся в разных заданиях. Часть, которую он пропустил, хотя это то, что B должен также использовать FLAG_ACTIVITY_NO_HISTORY при запуске намерения для браузера. Примечание: если браузер уже запущен еще до запуска приложения OP, то, конечно, вы увидите браузер при нажатии назад из A. Так что, чтобы действительно проверить это, обязательно выйдите из браузера перед запуском приложения.