Прежде всего, на Android может одновременно выполняться только одно действие, поэтому у вас никогда не будет одновременно запущено два действия. Используйте startActivity()
, если вы хотите «запустить и забыть», то есть вы хотите запустить действие, но не ожидаете, что оно вернет значение вашей активности. В этом случае новое действие начнется, и ваше действие будет приостановлено; вы можете в конечном итоге восстановить контроль, как только пользователь вернется к вашей активности.
Используйте startActivityForResult()
, когда вы ожидаете результата от запускаемой вами деятельности. В этом случае вызывающее действие должно переопределить onActivityResult()
, которое будет вызываться при выходе из запущенного действия и возвращать вам результат (который устанавливается с помощью setResult()
).
В обоих случаях, поскольку вызывающее действие и вызываемое действие находятся в одном и том же задача , в определенном смысле это "синхронно" (хотя я думаю, что использование терминов "синхронный" и "асинхронный" может путать в этом контексте). Вызывающая активность не будет отображаться на экране, пока не будет завершена вызываемая активность.
Полезная информация, чтобы узнать больше:
* http://developer.android.com/guide/topics/fundamentals/tasks-and-back-stack.html
-
Бруно Оливейра (Android Developer Relations, Google)