安卓Activity生命周期全解析

如有转载,请申明:

转载至 http://blog.csdn.net/qq_35064774/article/details/52557128



Activity是安卓中的四大组件之一,因此它的生命周期就显得比较重要。

下面这张图是经典的安卓Activity生命周期图。(cao,怎么这么多? 我开始方了)

 

生命周期图

 


调用时间

 

onCreate: Activity创建的时候调用。

onStart: Activity显示时调用。

onResume: Activity获得焦点时调用。

onPause: Activity失去焦点时调用。

onStop: Activity取消显示时调用。

onDestroy: Activity销毁时调用。

onRestart: Activity由后台切换到界面时调用。

 

 

上面是介绍了各个生命周期方法被调用的时候。光是这样还是不太好理解。

下面我们介绍各个方法的应用场景。

 

应用场景

 

onCreate: 做初始化相关操作,一般 findViewById等相关操作都是在这里进行。

onDestroy: 退出Activity时,释放资源等操作。

onRestart: 恢复在onStop中停止的操作。

onStart: Activity被显示后才进行的操作,比如UI动画。

onStop: 停止Activity不显示时没必要进行的操作,比如:动画、GPS等。

onResume: 恢复在onPause中停止的操作。

onPause: 保存持久化数据,停止一些操作。

 

 

有必要分这么细吗

 

看到这里,你可能会有一些疑问,为什么还要分onStart onResume?显示的时候,不就是获得焦点的时候吗?

 

事实上不是这样的,所以谷歌才分的这么细。

比如,当一个Activity为透明主题的时候,它下面那个Activity是可见的,但确是没有得到焦点。

 

 

切换横屏竖屏对生命周期的影响

 

 

你需要注意的是,不仅仅只有homeback键会影响Activity的生命周期。当切换横屏竖屏时,也会有影响。

 

在模拟器上按Crtl+F12切换成横屏时,执行顺序是:

onSaveInstanceState-->

onPause-->

onStop-->

onDestroy-->

onCreate-->

onStart-->

onRestoreInstanceState-->

onResume-->

 

也就是,从竖屏切换到横屏时,会先调用onSaveInstanceState来保存切换时的数据,然后销毁当前的Activity,然后重新创建一个Activity,然后调用onRestoreInstanceState恢复数据。

 

而由横屏切换到竖屏则会执行两次上述步骤。

 

如果Activity销毁了,相应的,上面临时保存的数据也会丢失。虽然谷歌提供了相应的两个声明方法来保存的恢复数据,但还是很麻烦。

这时候我们可以在AndroidManifest.xml中的对应的Activity中设置android:configChanges="orientation|keyboardHidden|screenSize"

 

这个时候,再次旋转屏幕,只会调用onConfigurationChanged

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值