Activity各生命周期详解

Activity的各个生命周期

首先,我们先来看看activity的各个生命周期:

onCreate()、onStrart()、onResume()、onPause()、onStop()、onRestart()以及onDestroy(),这些就是activity的七个生命周期,在安卓中每个生命周期都有相当重要的作用。

activity生命周期示意图

onCreate()

数据初始化或布局、控件初始化
一般来说,onCreate()这个生命周期是用户所看不到的,当activity处于可见状态时,是onStrart()方法回调执行的时候。作为第一个生命周期,在activity被创建回调时,我们一般在创建Activity时需要重写该方法做一些初始化的操作,如通过setContentView设置界面布局的资源,初始化所需要的组件信息等。

onStrart()

由于生命周期很短,这里一般不做处理
就如上面所说,只有当这个生命周期被回调执行时,activity才处于可见状态,虽然说是可见状态,但是还没有在前台显示,因此用户也无法交互。可以简单理解为Activity已显示却无法被用户看见。

onResume()

当activity交互时,用来做控件的控制等操作
当onResume方法被回调调用时,activity才可以响应用户,用户可以对activity进行操作,一直持续到onPause()方法被调用前,从流程图可见,当Activity停止后(onPause、onStop方法被调用),重新回到前台时也会调用onResume方法。可以在onResume方法中初始化一些资源,比如打开相机或开启动画。

onPause()

当activity暂停时,用来做资源的暂停操作,如:线程、动画的暂停
当此方法被调用时,activity将会被停止,一般来说,通常接下来会调用onStop方法,但通过流程图可见,另一种情况是onPause() 执行后直接执行了onResume方法,这可能是用户点击Home键,让程序退回到主界面,程序在后台运行时又迅速地再回到到当前的Activity,此时onResume方法就会被回调。我们可以在onPause方法中做一些数据存储、动画停止、资源回收等操作。另外,onPause方法执行完成后,新Activity的onResume方法才会被执行。所以onPause不能太耗时,因为这可能会影响到新的Activity的显示。

onStop()

当Activity停止时,用来保存需要的数据
此方法回调时,Activity即将停止或者完全被覆盖(Stopped形态),此时Activity不可见,仅在后台运行。同样地,在onStop方法可以做一些资源释放的操作,不能太耗时。

onRestart()

当Activity被恢复时,用来做数据的恢复操作
当此方法被调用时,activity不可见状态变为可见状态,这个时候activity正在被重新启动。这种情况,一般发生在用户打开了一个新的Activity时,之前的Activity就会被onStop,接着又回到之前Activity页面时,之前的Activity的 onRestart方法就会被回调。

onDestroy()

当Activity被销毁时,用来做数据的销毁,资源的释放操作
此方法回调时,表示Activity正在被销毁,也是生命周期最后一个执行的方法,一般我们可以在此方法中做一些回收工作和最终的资源释放。

当手机执行各个操作时生命周期的调用情况

为了让大家更好的理解,我们列举以下几种情况:
按下home键:onPause(),onStop()
返回:onRestart(),,onStart()
横竖屏切换:onPause(),onStop(),onDestory(),onCreate(),onStart(),onResume()
接电话:onPause(),onStop()
返回:onResume()

猜你喜欢

转载自blog.csdn.net/qq_38842722/article/details/80564310