2012-01-06 5 views
12

Может ли кто-нибудь помочь мне понять синхронный и асинхронный мероприятия в Android?Синхронная и асинхронная деятельность

Что конкретно подразумевается под синхронной и асинхронной активностью в Android?

StartActivity, StartSubActivity и StartAcivityForResult запускают операцию синхронно или асинхронно или могут вести себя в обоих направлениях?

Просьба пояснить, поскольку я прочитал много статей, но не смог найти должного объяснения по этому поводу.

+0

@ Dinesh..Your вопрос такой же, как [ссылка] HTTP: // StackOverflow .com/questions/8613295/difference-between-synchronous-activities-ans-асинхронные действия [link], а также вы ответили на это сообщение. Итак, почему вы задаете один и тот же вопрос. Более того, AFAIK startSubActivity никогда не выпускается публично, и его функциональность предоставляется startActivityForResult() – Maverick

+0

. Спасибо Ravi за комментарий. Я ответил на этот вопрос, но я все еще немного смутил эту концепцию. Поэтому хочу быть на 100% ясным. Если у вас есть идея по этому поводу, чем вы можете поделиться со мной ... :) –

+1

«Может кто-нибудь помочь мне объяснить синхронную и асинхронную активность в android». - в Android такой концепции нет. – CommonsWare

ответ

17

Прежде всего, на Android можно запускать только одно действие, так что вы никогда не будете одновременно запускать два действия. Используйте startActivity(), когда вы хотите «стрелять и забывать», то есть вы хотите запустить мероприятие, но не ожидаете, что оно вернет значение вашей активности. В этом случае начнется новое действие, и ваша деятельность будет приостановлена; вы можете в конечном итоге восстановить контроль, как только пользователь вернется к вашей деятельности.

Используйте startActivityForResult(), когда вы изучаете результат деятельности, которую вы запускаете. В этом случае вызывающая операция должна переопределить onActivityResult(), которая будет вызываться, когда запущенная деятельность завершается и имеет результат, чтобы вернуться к вам (которую он устанавливает с setResult()).

В обоих случаях, так как вызывающая активность и называется деятельность в одной и той же задачи, это «синхронные» в определенном смысле (хотя я думаю, что, используя термины «синхронный» и «асинхронный» может привести к путанице в этот контекст). Вызывающая активность не будет отображаться на экране до тех пор, пока вызываемая деятельность не завершится.

Полезно читать, чтобы узнать больше это: * http://developer.android.com/guide/topics/fundamentals/tasks-and-back-stack.html

- Бруно Оливейра (Android Developer, Отношения Google)

+1

Спасибо Бруно за быстрый ответ. Но можно просто объяснить мне, в каком смысле термин «синхронный» и «асинхронный» используется, поскольку я видел во многих местах такой тип вопроса ... –

+3

Синхронный означает, что выполнение не будет продолжаться до тех пор, пока не будет завершена определенная задача , Если 'startActivity' работал таким образом, весь интерфейс замерзнет до тех пор, пока не будет запущена другая работа.Асинхронный означает, что ваша задача будет выполняться где-то в будущем, а выполнение продолжается в то же время: вы запрашиваете запуск Activity, и ваш код продолжает выполняться, зная, что в конечном итоге это произойдет. – slezica

+1

Ответ не отвечает на вопрос правильно. –

Смежные вопросы