Activity生命周期介绍

android四大主件Activity存在自己的生命周期,google官网上用下面一张图说明生命周期。

Activity生命周期介绍_第1张图片


7个生命周期方法:


(1)onCreate(Bundle bundle);创建Activity,

(2)onStart();开启Activity时调用,此时activity界面用户可见。

(3)onResume();在Activity显示时调用,获取焦点,文本框可输入,按钮可点击。

(4)onPause();在某个Activity被覆盖,但是又没有被完全覆盖时调用。失去焦点,文本框不可输入,按钮不可点击,界面仍可见。

类似于游戏的暂停状态。

(5)onStop();在某个Activity被覆盖时调用,activity界面用户不可见。

(6)onRestart();在某个Activity被覆盖后又重新显示时调用

(7)onDestroy();最后销毁时调用


此外还有两种生命周期

可视生命周期:onStart())-->onResume())-->onPause())-->onStop()

前台生命周期: onresume-->onpause  界面用户仍然可见,但是失去焦点


使用场景:
1.应用程序退出自动保存数据   ondestory   oncreate
2.应用程序最小化 暂停的操作  onstop onstart  视频播放器
3.游戏的暂停和开始 前台生命周期



tips:

一:从一个activity跳转到另一个activity,第一个activity会将整个生命周期走完,onCreate()-->onStart())-->onResume()-->onPause()-->onStop()-->onDestroy()

然后第二个activity的生命周期是onCreate()-->onStart()-->onResume()。


如果第二个activity的style是Dialog窗口模式

<activity android:theme="@android:style/Theme.Dialog"/>,那么第一个activity之执行到onPause()


二:屏幕横竖屏切换时会把当前activity销毁再次创建一个新的activity,数据都不复存在。


禁止横竖屏切换方法:

 <activity android:name="com.zhangyan.itheima28.IntentActivity"
            android:screenOrientation="portrait"
            android:configChanges="orientation|keyboardHidden|screenSize">
  </activity>

当android:configChanges指定的属性发生变化时,不会去重新启动Activity,而是通知程序去调用 onConfigurationChanged()函数 例如:在进行横竖屏的切换时,会重新启动Activity,而定义了这个属性,就不会重新启动Activity了,而是去调用 onConfigurationChanged()函数


自从Android 3.2(API 13),在设置Activity的android:configChanges="orientation|keyboardHidden"后,还是一样 会重新调用各个生命周期的。因为screen size也开始跟着设备的横竖切换而改变。所以,在AndroidManifest.xml里设置的MiniSdkVersion和 TargetSdkVersion属性大于等于13的情况下,如果你想阻止程序在运行时重新加载Activity,除了设置"orientation", 你还必须设置"ScreenSize"。



你可能感兴趣的:(android)