В тот момент, когда вы вызываете startActivityForResult, ваша активность будет закрыта или приостановлена, и новая активность будет запущена. Единственное, что может завершить новое действие, - это новое действие.
Вы можете запустить фоновое задание и позволить этому фоновому заданию каким-то образом уведомить ваше действие, которое теперь действие может завершить само.
Я не знаю, будет ли обработчик , созданный в действии A и переданный потоку, оставаться действительным, если действие A приостановлено, а действие B. Но я бы предположил, что это работает, потому что оба действия выполняются в одном потоке, поэтому они должны совместно использовать одну и ту же очередь сообщений.