如有转载,请申明:
转载至 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是可见的,但确是没有得到焦点。
切换横屏竖屏对生命周期的影响
你需要注意的是,不仅仅只有home、back键会影响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。