Activity的生命周期

前言:
再巩固下基础

1.Activity的生命周期解析

Activity的生命周期一般分为俩种情况:

1典型情况下

在正常情况下,Activity会经历如下生命后期

(1)onCreate: 表示Activty正在被创建,这是生命周期的第一个方法。在这个方法中,我们一般做一些初始化工作,比如调用setContentView去加载界面布局资源,初始化Activity所需的数据等等。

(3)onRestart: 表示Activity正在重新启动。一般情况下,当当前Activity从不可见重新变为可见状态时,onRestart就会被调用。这种情况一般是用户行为导致的,比如用户按Home键切换到桌面或者用户打开了一个新的Activity,这是当前的Activity就会暂停,也就是onPause和onStop被执行了,接着用户又回到了这个Activity,就会出现这种情况

(3)onStart: 表示Activity正在被启动,即将开始,这时Activity已经可见了,但是还没有出现在前台,还无法和用户交互。这个时候可以理解为Activity其实已经出来了,只是我们看不到。

(4)onResume:表示Activtity表示Activity已经可见了,并且出现在前台活动。注意这个和onStart的对比,onStart和onResume都表示Activity已经可见,但是onStart的时候还在后台,onResume的时候已经显示在前台。

(5)onPause: 表示Activtity正在停止,此时可以做一些轻量级的工作,例如停止动画,但是注意不能太耗时。因为这行影响到新Activity的显示,onPause必须先执行完新的Activity的onResume才会执行。

(6)onStop:表示Activtity即将停止,这时可以做一些稍微重量级的回收任务,但不能太耗时。

(7)onDestory: 表示Activtity即将销毁,这是Activity生命周期的最后一个回调,可以做一些回收工作和资源的释放。

附加:

(1)针对一个特定的Activity,第一次启动,回调如下:onCreate->onStart->onResume

(2)当用户打开新的Activity或者切换页面的时候,回调如下:onPause->onStop。这里有一种特殊情况,如果新Activity采用了透明主题,那么当前Activity不会回调onStop。

(3)当用户再次回到原Activity时,回调如下:onRestart->onStart-onResume。

(4)当用户按back键回退时,回调如下:onPause->onStop->onDestroy。

(5)当Activity被系统回收后再次打开,生命周期和(1)一样。

2异常情况

异常情况下的生命周期是指内存不足Activity被系统回收后或者由于当前设备的Configuration发生改变从而导致Activity被销毁重建(也就是旋转屏幕)那可以在AndroidManifest.xml中指定Activity的Configuration的属性值避免屏幕旋转导致Activity销毁重建。




          android:name="MainActivity"

          android:configChanges="orientation|screenSize"



默认情况下Activity不做特殊处理,那么当系统配置发生后,Activity就会被销毁并重新创建。其onPause,onStop,onDestroy均会被调用,同时由于Activity是在异常情况下终止的,系统会调用onSaveInstanceState来保存当前Activity的状态,强调一下系统只会在Activity异常被销毁并且有机会重新显示的情况下才会去调用这个方法(这个方法调用的时机是在onStop之前)它和onPause没有既定的时序关系,也可能在onPause之前调用同样也可能在之后。当Activity被重新创建后,系统会调用onRestoreInstanceState,并且把onSaveInstanceState的Bundle对象作为参数传递给onRestoreInstanceState和onCreate方法。因此我们可以通过这俩个方法判断Activity是否被重建了。(从时序上来说onSaveInstanceState的调用时机在onStart之后)

2.1Activity的优先级

(1)前台Activity----正在和用户交互的Activity,优先级最高

(2)可见但非前台Activity----比如Activity弹出了一个弹框,导致Activity可见但是位于后台无法和用户直接交互

(3)后台Activity----已经被暂停的Activity,比如执行了onStop,优先级最低

你可能感兴趣的:(Activity的生命周期)