Android Activity生命周期

Activity常用到的生命周期方法包括:onCreate、onstart、onResume、onRestart、onPause、onStop、onDestroy七种;
另外还有两个Activity被异常销毁恢复的生命周期方法:onSaveInstanceState、onRestoreInstanceState
下面从不同环境条件下分析执行的生命周期方法:
(1):第一次启动某一Activity
onCreate----->onstart----->onResume
(2):从当前Activity跳转到某一Activity或者按下Home键
onPause----->onStop
(3):再次回到原来的Activity
onRestart----->onStart----->onResume
那么将(2)和(3)连起来理解就有一个问题出现了,再次返回原先Activity是先执行原先Activity的onResume方法呢,还是先执行当 前Activity的onPause方法呢?这个有点涉及到Activity栈的知识,你想想肯定是现在的Activity在栈顶了,那肯定是先执行当前 Activity的onPause方法了,这样他暂停之后才会执行栈内其他Activity的onResume方法了;
(4):在当前Activity界面按下Back键
onPause----->onStop----->onDestroy
(5):在当前Activity界面按下锁屏键进行锁屏操作
onPause----->onStop
(6):从锁屏状态返回到之前的Activity
onRestart----->onStart----->onResume
(7):在当前Activity窗体中以弹窗的形式显示另一个Activity只会执行当前Activity的onPause方法,并不会执行onStop方法,如果此时点击Back键退出弹窗Activity显示出原先的 Activity,则直接执行onResume方法,连onRestart与onStart方法都不执行;
(8):在当前Activty上通过按钮点击的形式弹出一个AlertDialog窗体,发现根本不会对Activity生命周期有任何影响,说明一点,AlertDialog其实是附在Activity上面的;
(9):接下来说说onSaveInstanceState与onRestoreInstanceState,这两个生命周期方法和onStop和onStart方法的执行顺序是:
在这里插入图片描述

但是onSaveInstanceState和onPause之间是没有先后关系的;
如果我们的Activity被异常关闭,比如你进行了横竖屏切换或者当前Activity因为优先级比较低被系统杀死,系统就会调用 onSaveInstanceState进行Activity状态的保存,比如说Edittext里面的值或者你ListView上面滑动到哪个Item 信息,当该Activity重新创建的时候就会调用onRestoreInstanceState方法恢复之前在onSaveInstanceState里面的数据了,注意的是onSaveInstanceState方法仅仅会出现在Activity被异常关闭的情况下,正常情况下是不会执行这个方法的,也就是正常情况下我们通过onCreate创建Activity的时候,他的Bundle参数是null的;
关于Activity生命周期的一点总结:
onCreate和onDestroy是一对相对的方法,分别标志Activity的创建和销毁;onStart和onStop是一对相对的方法,表示Activity是否可见;onPause和onResume是一对相对的方法,表示Activity是否处于前台;在正常的销毁Activity情况下是不会执行onSaveInstanceState的;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

sunywz

~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值