Could someone provide a description of what happens when an Activity
calls its finish()
method?
Does it exit immediately, or does it complete the function from which it was called?
Could someone provide a description of what happens when an Activity
calls its finish()
method?
Does it exit immediately, or does it complete the function from which it was called?
If there are two activities A and B. And your flow is going from A > B; and B=A calls
finish()
.Then,
The method where you called
finish()
from will execute as Mark mentioned. And flow of callbacks will be as followed -onPause()
ofactivity A
onRestart()
>onStart()
>onResume()
of Activity Bfinish()
fromactivity A
; onlyonStop()
ofActivity A
will be called here. While, in this case, where we calledfinish()
fromActivity A
; SoonStop()
andonDestroy()
both will be called foractivity A
.The method that called
finish()
will run to completion. Thefinish()
operation will not even begin until you return control to Android.ondestroy()
is the final call you receive before your activity is destroyed.This can happen either because the activity is finishing (someone called
finish()
on it, or because the system is temporarily destroying this instance of the activity to save space. You can distinguish between these two scenarios with theisFinishing()
method.Every life cycle event like
onCreate
,onResume
,onPause
....onDestroy
of an Activity is always called on a single thread - The "Main thread".In short this thread is backed by a Queue into which all the activity events are getting posted. This thread can execute all these events in the order of insertion.
If you are calling
finish()
in one of the life cycle callbacks likeonCreate()
...a "finish" message will get added to this queue but the thread is not free to pick & execute "finish" action until currently executing method returns i.e Thread is freed from current task.