作者:让生活洒满阳光_622 | 来源:互联网 | 2023-10-10 15:34
Activity是整个AndroidApp直接与用户交互的核心组件,了解Activity的生命周期是了解Android系统的基础。Activity的起源:Activity是与用户交互的第一接口,它提
Activity是整个Android App直接与用户交互的核心组件,了解Activity的生命周期是了解Android系统的基础。
Activity的起源:Activity是与用户交互的第一接口,它提供了一个用户用户完成指定的窗口。当开发者创建Activity之后,通过调用setContentView(View)方法来个Activity指定一个显示的界面,并以此为基础提供给用户交互的接口。系统采用Activity栈的方式来管理Activity。
Activity的状态:Activity一个最大的特点就是拥有多种状态,它可以在多种状态见进行切换,以此来控制自己的生命周期。
☆ Running
这个时候,Activity处于Activity栈的最顶层,可见,而且与用户进行交互。
☆ Paused
这个时候,Activity失去焦点,被另外一个非全屏或者一个透明的Activity放置在栈顶,Activity就转化为Paused状态,它只是失去了与用户交互的能力,所有的状态信息,成员变量都还保持着,只有在系统内存极低的情况下,才会被系统回收掉。
☆ Stopped
这个时候,Activity被另外一个Activity完全覆盖,那么Activity就会进入到Stopped状态,此时,它不在可见,但依然保持了所有信息和成员变量。
☆ Killed
这个时候,Activity被系统回收了或者从来没有创建过
Activity的生命周期:这张经典图众所周知,但是经常弄混它。
上图列举了很多的生命周期状态,但是其中只有三个是稳定的(Resumed,Paused,Stopped),而其他状态都是过渡状态,很快就会结束
1. Activity启动与销毁过程
在系统调用了onCreate()之后,马上回调用onStart(),然后继续调用onResume()以进入Resumed状态,完成启动。在Activity失去焦点之后,系统首先调用onPause(),然后继续调用onStop()最后调用onDestroy()来结束一个Activity的声明周期让它回到Killed状态。
以上这个过程就是Activity的启动与销毁过程。
onCreate():创建基本的UI元素。
onPause()与onStop:清除Activity的资源。
onDestoy():清除开启的线程。
2. Activity的暂停和恢复过程
当栈顶的Activity部分不可见后,就会导致Activity就入到Pause状态,此时就会调用onPasue()方法,当结束阻塞后,就会调用onResume()方法来恢复到Resume状态。
以上这个过程就是Activity的暂停和恢复过程
onPause():释放系统资源。
onResume():需要重新初始化在onPause()中释放的资源。
3. Activity的停止过程
栈顶的Activity部分不可见时,实际上后续会有两种可能,从部分不可见到可见,也就是恢复过程;从部分不可见到完全不可见,也就是停止过程。系统在当前Activity不可见的时候,总会调用onPause()方法。
4. Activity的重新创建过程
当你的Activity长时间处于stopped状态而且此时系统需要更多的内存或者系统内存纪委紧张时,系统就会回收你的Activity,而此时系统为了补偿你,会将 Activity状态通过onSavaInstanceState()方法保存到Bundle对象中,当然你也可以增加额外的键值对存入Bundler对象以保存这些状态。当你需要重新创建这些Activity的时候,保存的Bundle对象就会传递到onRestoreInstanceState()方法与onCreate()方法中,这也就是onCreate()方法中的参数---Bundle savedInstanceState的来源。不过要注意的是onSavaInstanceState()方法并不是每次当Activity离开前台的时候都会调用的,如果用户调用了finish()结束了Activity则不会调用。