Вместо того, чтобы звонить startActivity
в A при запуске B, звоните startActivityForResult
. Затем, ваша деятельность для A, обрабатывать onActivityResult
.
Теперь, в B, когда вы открываете C, звоните setResult
, прежде чем вызывать финиш. Это позволит вам установить некоторые данные, которые будут переданы обратно в метод A onActivityResult
. Передайте флаг, чтобы указать, что A должен закрыть себя и затем вызвать finish
. Обрабатывать этот флаг в A 1015 *.
Таким образом, каждое действие отвечает за закрытие себя, и вы не искусственно возитесь с задним стеком. Использование флагов намерений прекрасно работает в простом случае A, B, C, но, вероятно, развалится, если эти 3 экрана являются частью более крупного решения (т. Е. A, B и C находятся под множеством действий, которые вы не хотите возиться с).