关于Activity生命周期的理解 二(直白高效版)

http://blog.csdn.net/qq_20082063/article/details/51242351(关于Activity生命周期的理解 一)

在上一篇文章中,介绍了Activity的基本的生命周期,在此处,引入onWindowFocusChanged、onSaveInstanceState、onRestoreInstanceState方法。本文并非完全原创,是博主参考众多资料的总结。

1,onWindowFocusChanged(窗口的焦点发生改变):这个方法在Activity的窗口获得或者失去焦点的时候被调用,但凡涉及到它焦点的获得和失去的范围都会调用。当一个Activity创建出来的时候,他的调用是在onResume方法之后的,但是当一个Activity因为某些原因被覆盖或者退到后台以及销毁的时候,他是在onPause方法之后调用的。

关于这个方法的实际应用之处:在一个Activity创建的时候,执行完这个方法之后,即可确定当前的Activity已经绘制完毕,这样我们在这里就可以获得某个组件的具体位置以及它的尺寸大小,另外,还可以获取手机屏幕的长和宽,获取之后,可以用于某些地方动态加载布局时的设置大小问题,当然,如果有需要在Activity完成渲染就要进行的操作的话,也可以放在这里执行,在具体操作的逻辑上请自行处理和判断。

2,onSaveInstanceState(保存Activity实际状态):这个方法涉及的情况包括(1)当前的Activity被覆盖或者退到后台当中时,由于内存不足,系统会自动杀死当前的Activity,(2)屏幕的方向发生了改变(导致Activity重建),这里的话,在这个方法中会临时保存一些View的参数,重构Activity的时候重新取出这些临时参数。(3)当前的Activity由自身跳转到其他的Activity或者是点击Home图标回到桌面时,自身退到后台当中会调用这个方法。这个方法的调用是在onPause之前

关于这个方法的实际应用之处:类似视频播放器,在这里可以做一些观看进度的暂时保存,以便屏幕界面旋转之后继续进度播放。浏览器应用可以在这个方法里临时保存当前浏览的网址一。

关于Activity横竖屏切换的生命周期的调用情况:

(1)、不设置Activity的android:configChanges时,切屏会重新调用各个生命周期,切横屏时会执行一次,切竖屏时会执行两次

(2)、设置Activity的android:configChanges="orientation"时,切屏还是会重新调用各个生命周期,切横、竖屏时只会执行一次

(3)、设置Activity的android:configChanges="orientation|keyboardHidden"时,切屏不会重新调用各个生命周期,只会执行onConfigurationChanged方法

3,onRestoreInstanceState(还原Activity的状态):这个方法涉及的情况包括(1)当前的Activity被覆盖或者退到后台当中时,由于内存不足,系统会自动杀死当前的Activity,然后用户又回到了这个Activity的时候,此方法被调用,(2)屏幕的方向发生了改变(导致Activity重建)的时候调用这个方法。

还是那句话,建议大家真正的动手去写一个实例来进行验证和模拟。

此文如有错误之处,望大家指出,你我共勉。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值