У меня есть вопрос о Activity.finish()
.
В моем коде Android есть 4 действия ( A , B , C , D ).Начальное действие A вызывает startActivityForResult(intent, reqCode)
для запуска действия B . B запускается C , а затем finish()
, не ожидая результата. C делает то же самое, что и B , запускается D и затем finish()
. D вернет некоторый результат, к setResult(resultCode)
.
Когда мой код запустится и действие D вернет некоторый результат, A поймаетRESULT_CANCELED
на onActivityResult()
, даже если RESULT_OK
возвращается в D .Я предполагаю, что RESULT_CANCELED
от действия B , которое было прекращено до того, как D возвращает результат, а не от D .
Но, мой вопрос, почему действие A catch RESULT_CANCELED
после D возвращает некоторый результат, а не сразу после прекращения B ?И что я должен сделать, чтобы A поймал результаты из D ?Нужно ли сохранять B и C в живых, чтобы передать результаты от D до A ?