Activity调用finish方法,会回调哪些生命周期方法?

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);执行销毁 */
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值