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