Android中activity可以调用finish方法,结束自己,但是调用finish方法,activity到底会走那些生命周期方法呢,我很好奇,就自己测试一下,下面直接上结论:
在onCreate中:onCreate->onDestroy
在onStart中:onCreate->onStart->onStop->onDestroy
在onResume中:onCreate->onStart->onResume->onPause->onStop->onDestroy
之所以是这样,源码中给出了解释,activity会判断状态,只有没有被finish才会执行下一个生命周期。
mInstrumentation.callActivityOnCreate(activity, r.state) // 函数中会判断:
if (!r.activity.mFinished) {
activity.performStart();
r.stopped = false;
}
/**执行完 onCreate()后,判断这时 activity 有没有finish ,没有就会接着执行 onStart(),否则会调用 destory()
执行完 onStart()后会执行 handleResumeActivity 函数,其中performResumeActivity 函数中:*/
if (r != null && !r.activity.mFinished) {
r.activity.performResume();
}
/**会调用 onResume 如果此时finish,就不会执行finish(),会调用ActivityManagerNative.getDefault()
.finishActivity(token, Activity.RESULT_CANCELED, null);执行销毁 */
---------------------
转自:https://blog.csdn.net/wxz1179503422/article/details/77930217