Может кто-нибудь объяснить, как startActivity (намерение) и startActivityForResult (намерение) являются асинхронными? - программирование
Подтвердить что ты не робот

Может кто-нибудь объяснить, как startActivity (намерение) и startActivityForResult (намерение) являются асинхронными?

Если асинхронный поток - это поток, который работает отдельно к основному потоку и не мешает основному потоку.

Создает ли новый Activity основной поток после того, как он был запущен через startActivity(intent)?

Большинство из того, что я прочитал на этом, говорит, что они оба асинхронны, однако есть довольно много противоречивых ответов, и люди, которые говорят это, действительно не дают убедительных аргументов.

Итак, если кто-нибудь, у кого это ясно в голове и может объяснить, почему они синхронны/асинхронны, я был бы очень благодарным человеком!

Приветствия

EDIT: Итак, ответ, который я получил от этих двух хороших людей и некоторых вещей в Интернете.

Приведение деятельности в синхронное/асинхронное может привести к появлению нагрузки лошади. Но он по-прежнему относится к принципам..

Synchronous методы/команды должны быть выполнены до того, как стек вызовов может продолжить.

Asynchronous методы/команды (обычно выполняемые в потоке /AsyncTask ) продолжаются параллельно, позволяя продолжить основной поток выполнения. (Он может вернуться в свое собственное время)

Методы startActivity (намерения) и startActivityForResult (намерения) являются асинхронными, поскольку они не блокируются и позволяют продолжить выполнение потока при выполнении своей соответствующей задачи.

4b9b3361

Ответ 1

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

Вылет, если у вас есть что-то, что требуется некоторое время для завершения, в методе onPause() первого действия, новый Activity будет запущен медленно.

Ответ 2

Когда вы startActivityForResult, вы все равно выполняете асинхронный вызов. Активность вашего вызывающего абонента приостанавливается, а новый запускается в другом процессе (если он работает под другим пользователем).

Но когда вызываемая деятельность завершает установку результата, ваша активность возобновляется, и вы получаете onActivityResult называется обратным вызовом, содержащим результат.