activity跳转生命周期是怎么调用的

activity的生命周期一直是Android工程师都会遇到的,生命周期的调用规则究竟是什么样的,以两个activity之间的跳转为例了解生命周期规则

我把这次的分享情况分了几种状态
1,当前activity不finish,直接跳转下一activity

可以发现当前MainActivity先是调用了onPause,然后由下一TestActivity调用生命周期onCreate(),onStart(),onResume(),之后再由MainActivity调用onStop()方法
分析原因onPause方法是activity可见但是不可操作了,这时候开启新的TestActivity,新的TestActivity从创建到可见可操作,等TestActivity可见了,那么上一个activity才彻底不可见也不可操作,即MainActivity调用onStop方法
那么如果此时点返回键生命周期会是什么样的呢?

可见先是TestActivity执行onPause方法也就是不可操作了之后,调用MainActivity的onRestart方法,之后调用onStart、onResume这时MainActivity转成可见可操作了,那么开始调用TestActivity的onStop方法之后是onDestroy方法
2当前activity如果finish,然后跳转另一activity,猜想可能是跟上一情况一样,只不过在onStop方法之后调用一个当前activity的onDestroy方法
下面调用验证

与猜想预期一致,不多赘述
3.还有一种情况如果要跳转的activity为dialog形式的会是什么样的

这种形式下的activity上一个activity仍然是可见的但是不可操作,所以在新的activity生命周期执行完毕的时候没有调用onStop方法
此时再点返回看一下生命周期

由于之前的跳转上一个activity并没有调用onStop方法,所以在TestActivity调用onPause之后,MainActivity只调用了onResume方法并没有调用onRestart以及onStart方法

综上所述,我认为两个activity之间的跳转可以理解为先让当前activity不可操作,即调用onPause方法,然后要让当前activity不可见必须得让下一个activity可见, 下一个activity方法执行到onResume,上一个activity才不可见,然后执行后续的生命周期方法,另外一种情况就比如新的activity是dialog形式的,并不能让上一个activity完全不可见,所以上一个activity也就不会调用onStop方法了,同理当返回上一activity时就不需要再调用onRestart以及onStart方法

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值