Android-Activity生命周期(生命,有始有终!)

来源:互联网 发布:成都java 编辑:程序博客网 时间:2024/06/08 02:05

        生命有生有死,这是大自然的规律,也是大自然的可持续性的最好彰显。试想一下,如果生命有生无死,最后地球得有多拥挤,最后导致毁灭。而程序也是模仿这种规律。比如动态分配内存,要用的时候就要先分配,在不需要的时候就要释放掉,如果只有分配,那这个程序最后的结果就会因为内存吃不消了而挂掉。Activity生命周期也基本上是这个原理。

Android 官方给出了Activity的生命周期图:


       要理解Activity 的生命周期,需要理解Activity 栈,每一个Activity的状态都是由它在Activity栈中所处的位置决定的,Activity 栈是当前所有正在运行的Activity的后进先出的集合,这个也是符合栈的特性:先进后出的原则。当一个Activity 被激活并获得焦点,此时这个Activity 就会处在栈顶的位置,而在此之前的界面的Activity 在栈中的位置就会下移。

      然后再了解一下Activity在其生命周期中的几种状态:

   活动状态:当一个Activity在栈顶的时候,这个Activity 就获得了焦点,是可见的,此时它就可以跟用户进行交互。Android系统将优先所有条件来显示这个activity,甚至销毁栈下面部分的activity,来保证这个activity拥有它所需要的资源。而当另一个activity变为活动状态时,这个activity将被暂停,也就是onPause()。

   暂停状态:某些情况下,Activity是可见的,但是并没有获得焦点,此时这个Activity就处于暂停状态。比如,当一个透明的或者非全屏的Activity显示在它之上时。而进入此状态的Activity,它仍然会被当作近似活动状态,但是它不能跟用户进行交互,也就不能接收用户的输入事件。当然,当系统走到极端的情况下,Android会主动终止暂停的Activity,以便为活动状态的Activity 释放资源。当一个Activity变的完全不可见的时候,该Activity就处在停止状态。

   停止状态:当一个Activity不可见时,它就处于停止状态。此时的Activity 依旧停留在内存中并保存所有的信息。一个Activity停止的时候,保存数据和当前的UI状态以及停止任何非关键操作是非常重要的。而在系统需要释放内存时,处在停止状态的Activity 就是首要释放的对象。当一个Activity被退出或者关闭时,它就会变为非活动状态。

   非活动状态:当一个Activity被终止之后,在启动之前它就处于非活动状态,此时的Activity就已经从Activity栈中移除了。到此,要再次显示和使用该Activity就要重新启动了。



0 0
原创粉丝点击