1.Activity的生命周期
指一个Activity从创建到销毁的过程,期间可能经历多个状态的变化,每次状态的变化都会触发相应的回调方法。
Activity生命周期分为四个阶段:
- 运行状态:可见,并且可操作
onCreate–onStart—onResume
onRestart–onStart—onResume - 暂停状态:可见,但是不可操作
onPause - 停止状态:不可见,并且也不可操作
onStop 销毁状态:该Activity结束,或Activity所在的Dalivik进程被结束
onDestoryonCreate():Activity在实例化过程被调用,进行创建工作,只会调用一次,一般创建界面,做一些数据的初始化工作。
- onStart():Activity启动过程的回调函数。
- onResume():恢复Activity时被回调,onStart()方法后一定会回调该方法,可操作。
- onPause():暂停Activity时被回调(Activity失去操作焦点,但可见),系统会停止动画等消耗CPU的事情。应该在这里保存你的一些数据,因为这个时候你的程序的优先级降低,有可能被系统收回。在这里保存的数据,应该在onResume里读出来。
- onStop():停止Activity时被回调(Activity失去操作焦点,不可见)。
- onDestory():销毁Activity时被回调,该方法只会被调用一次(回收资源)这是Activity被kill前最后一个被调用方法了。
- onRestart():这个方法在活动由停止状态变为运行状态之前调用,也就是活动被重新启动了。
2.横竖屏切换时使其生命周期不会发生改变
- 当进行横竖屏切换的时候,activity的生命周期会变成onPause–>onSaveInstanceState–>onStop–>onDestroy–>oncreate–>onStart–>onResume,可以看出,activity重新执行了一次,oncreate到onResume,
这样子的话之前的数据就会被丢失掉,这时候就要涉及到onSaveInstanceState保存数据了,然后在onCreate方法里面通过Bundle获取之前保存的数据。 - AndroidManifest.xml中设置android:configChanges=”orientation|screenSize|keyboardHidden”
3.有时候我们必须要屏幕横竖屏都可以自由切换的时候,这个时候就要准备两套方案了,方法步骤:
- 在res包下新建一个文件夹:layout-land,在这个文件夹里面需要写你想要横竖屏切换的页面的布局的名字,注意,和layout中的布局名字要相同,如:activity_main,那个在layout-land中的xml布局文件也必须要写成这个名字