Может кто-нибудь объяснить, как startActivity (намерение) и startActivityForResult (намерение) являются асинхронными?
Если асинхронный поток - это поток, который работает отдельно к основному потоку и не мешает основному потоку.
Создает ли новый Activity
основной поток после того, как он был запущен через startActivity(intent)
?
Большинство из того, что я прочитал на этом, говорит, что они оба асинхронны, однако есть довольно много противоречивых ответов, и люди, которые говорят это, действительно не дают убедительных аргументов.
Итак, если кто-нибудь, у кого это ясно в голове и может объяснить, почему они синхронны/асинхронны, я был бы очень благодарным человеком!
Приветствия
EDIT: Итак, ответ, который я получил от этих двух хороших людей и некоторых вещей в Интернете.
Приведение деятельности в синхронное/асинхронное может привести к появлению нагрузки лошади. Но он по-прежнему относится к принципам..
Synchronous
методы/команды должны быть выполнены до того, как стек вызовов может продолжить.
Asynchronous
методы/команды (обычно выполняемые в потоке /AsyncTask ) продолжаются параллельно, позволяя продолжить основной поток выполнения. (Он может вернуться в свое собственное время)
Методы startActivity (намерения) и startActivityForResult (намерения) являются асинхронными, поскольку они не блокируются и позволяют продолжить выполнение потока при выполнении своей соответствующей задачи.
Ответы
Ответ 1
startActivity(intent)
и startActivityForResult(intent)
являются асинхронными в том смысле, что эти методы немедленно возвращаются без запуска Activity. Фактически, они планируют, что действие начнется только после завершения жизненных циклов текущей деятельности.
Вылет, если у вас есть что-то, что требуется некоторое время для завершения, в методе onPause()
первого действия, новый Activity
будет запущен медленно.
Ответ 2
Когда вы startActivityForResult
, вы все равно выполняете асинхронный вызов. Активность вашего вызывающего абонента приостанавливается, а новый запускается в другом процессе (если он работает под другим пользователем).
Но когда вызываемая деятельность завершает установку результата, ваша активность возобновляется, и вы получаете onActivityResult называется обратным вызовом, содержащим результат.