Activity的生命周期方法

其实对于Activity的生命周期只要你去了解过几乎都能很熟练的写下来。但是有句话怎么说来着,纸上得来终觉浅吧!虽然一般情况下没人会问你这种看似很低级的问题。好了先来一张图认识一下
在这里插入图片描述
很官方的一张图了。接下来就直接验证就好了。
首先我启动了一个MainActivity可以看看这时候MainActivity的生命周期方法执行结果
在这里插入图片描述其实每个Activity第一次创建的时候都会这样。接下来我在MainActivity中又启动了一个NormalActivity把之前的MainActivity完全盖住了,其实这有了解过的都知道MainActivity会进入onStop状态,但是到底是先完成NormaActivity的创建还是先停止MainActivity呢?,还是直接看看结果吧
在这里插入图片描述可以看到MainActivity先进入onPause,此时等待NormalActivity经历onCreate–>onStart–>onResume之后,MainActivity才会进入onStop状态。
如果此时我们按返回键回到MainActivity界面,此时NormalActivity将会进入onDestory。而MainActivity将会进入重新启动也就是onRestart–>onStart–>onResume(此时MainActivity不会进入onCreate。因为它并没有进入onDestory),那执行顺序又是怎么样的呢?还是看结果
在这里插入图片描述这个已经不需要解释了吧。
Android中还存在一种半透明样式的Activity,它会占据屏幕位置但是不会完全占据。这种我就没有测试啦,感兴趣的可以自己去试试哦。
由于开开发中你几乎离不开dialog,而dialog也会占据屏幕位置,那会不会影响Activity的生命周期呢?这个我同样做了测试,首先启动Activity,然后在该Activity上面弹出一个dialog并使得点击外部不能消失。效果是这样的
在这里插入图片描述整个流程是先启动Activity然后弹出这个dialog之后点击Cancel按钮让这个dialog消失。在这个弹出dialog和隐藏dialog的过程中Activity的生命周期方法并没有任何变化
在这里插入图片描述可以看到MainActivity只是经历了从无到有的周期方法。之后的dialog并没有影响它的生命周期方法。因为Activity的实例是在任务栈中,所以只有任务栈中的结构变了才会有影响,而dialog并不会改变任务栈中的结构。同理如果弹出的是popupWindow也不会改变它的生命周期。
总结:1.只有任务栈中结构发生了改变才会影响到Activity的生命周期(比如再次启动了一个Activity)或者任务栈被系统回收掉(这个涉及到内存管理这一块暂时不深究)了。
2.当新启动一个Activity的时候会先进入onPause等待新的Activity创建完毕了之后再进入onStop或者onDestory。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值