Может ли кто-нибудь описать, что происходит, когда 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 A
onRestart()
> onStart()
> onResume()
активности Bfinish()
из activity A
; здесь будет вызываться только onStop()
of activity A
. Хотя в этом случае мы вызывали finish()
из activity A
; Итак, onStop()
и onDestroy()
оба будут вызваны для activity A
.