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