生命周期会调用的方法:
-
onCreate:在首次创建 Activity 时调用。系统向此方法传递一个 Bundle 对象,其中包含 Activity 的上一状态,不过前提是捕获了该状态,而后会调用onStart方法。(一般用于初始化数据) -
onStart:在 Activity 即将对用户可见之前调用。而后如果Activity转入了前台就会调用onResume方法。 如果此时直接屏幕熄灭或者用户按下home键则会直接调用onStop方法。 -
onResume:在 Activity 即将开始与用户进行交互之前调用。 此时,Activity 处于 Activity 堆栈的顶层,并具有用户输入焦点。当跳转另一个Activity,或者退出当前Activity后会调用onPause方法。 -
onPause:在系统即将开始继续另一个 Activity 时调用。 此方法通常用于确认对持久性数据的未保存更改、停止动画以及其他可能消耗 CPU 的内容,诸如此类。 它应该非常迅速地执行所需操作,因为它返回后,下一个 Activity 才能继续执行,所以不能执行耗时操作。而后正常情况下会调用onStop方法。但是有一种极端情况,就是如果这个时候快速让 当前Activity 返回前台,则会调用onResume方法。 -
onStop:在 Activity 对用户不再可见时调用。如果 Activity 被销毁,或另一个 Activity(一个现有 Activity 或新 Activity)继续执行并将其覆盖,就会调用此方法。而后如果 Activity 恢复与用户的交互,则会调用 onRestart 方法,如果 Activity 被销毁,则会调用onDestroy方法。 -
onRestart:在Activity被停止后再次启动时调用(即屏幕熄灭后再次回到app,按下home键后再次回到app),而后会调用onStart方法。 -
onDestroy:在 Activity 被销毁前或退出后调用,这是 Activity 收到的最后调用。 当 Activity 结束(对 Activity 调用了 finish 方法),或系统为节省空间而暂时销毁该 Activity 实例时,可能会调用它。 你可以通过 isFinishing 方法区分这两种情形。
Activity的 完整生命周期 自第一次调用onCreata()开始,直至调用onDestroy()为止。Activity在onCreata()中设置所有全局状态以完成初始化,而在onDestroy()中释放所有系统资源。
Activity 的 可视生命周期 自onStart()调用开始直到相应的onStop()调用结束。在此期间,用户可以在屏幕上看到Activity,尽管它也许并不是位于前台或者也不与用户进行交互。在这两个方法之间,可以保留用来向用户显示这个Activity所需要的资源。
Activity的 前台生命周期 自OnResume()调用起,至相应的onPause()调用为止。在此期间,Activity位于前台最上面并于用于进行交互,Activity会经常在暂停和恢复之间进行状态转换。列如当设备转入休眠状态或者有新的Activity启动时,将调用onPause()方法。
当应用遇到意外情况(如:内存不足、用户直接按Home键)由系统销毁一个Activity 时会被调用。 当屏幕的方向发生了改变或键盘显示隐藏都会销毁当前Activity,Activity会被摧毁并且被重新创建,如果你想在Activity被摧毁前缓存一些数据,并且Activity被重新创建后恢复缓存的数据。可以重写Activity的一下方法。
onSaveInstanceState() 被销毁前缓存一些数据 onRestoreInstanceState()被重新创建后回复缓存的数据
android:configChanges 属性指定了要捕获屏幕方向和键盘显示隐藏变化,当捕获到这写变化调用Activity的onConfigurationChanged()方法。
<activity
android:name=".main"
android:theme="@android:style/Theme.Dialog"
android:configChanges="keyboardHidden">
<activity>
默认情况下(没有配置android:configChanges属性):
- 竖屏切横屏,销毁当前Activity之后,创建一个新Activity实例。
- 横屏切竖屏,销毁当前Activity之后,创建一个新Activity实例。新的Activity实例很快就被销毁,接着又创建一个新Activity实例。如果只希望创建一个实例,可以配置:
android:configChanges="orientation"
|