Может ли кто-нибудь описать, что происходит, когда Activity вызывает метод finish()?
Выходит ли он немедленно или выполняет функцию, из которой он был вызван?
Может ли кто-нибудь описать, что происходит, когда Activity вызывает метод finish()?
Выходит ли он немедленно или выполняет функцию, из которой он был вызван?
Выходит ли он немедленно или завершается функция, из которой она была вызвана
Метод, который называется finish(), будет завершен. Операция finish() не начнется, пока вы не вернете управление Android.
Каждое событие жизненного цикла, такое как onCreate, onResume, onPause.... onDestroy действия всегда вызывается в одном потоке - "Основной поток".
Короче, этот поток поддерживается Очереди, в которую все события активности публикуются. Этот поток может выполнять все эти события в порядке вставки.
Если вы вызываете finish() в один из обратных вызовов жизненного цикла, например onCreate()... в эту очередь будет добавлено сообщение "finish", но поток не будет свободен в выборе и выполнении действия "закончить"
до тех пор, пока в настоящее время выполнение метода не вернет i.e. Thread освобождается от текущей задачи.
ondestroy() - последний звонок, который вы получаете до того, как ваша деятельность будет уничтожена.
Это может произойти либо из-за завершения операции (кто-то назвал ее finish(), либо потому, что система временно уничтожает этот экземпляр активности для экономии места. Вы можете различать эти два сценария с помощью метода isFinishing().
Если есть два действия A и B. И ваш поток идет от A > B; и B = A вызывает finish().
Тогда
Метод, по которому вы вызвали finish() from, будет выполняться, как указано в Mark. И поток обратных вызовов будет следующим:
onPause() of activity AonRestart() > onStart() > onResume() активности Bfinish() из activity A; здесь будет вызываться только onStop() of activity A. Хотя в этом случае мы вызывали finish() из activity A; Итак, onStop() и onDestroy() оба будут вызваны для activity A.