Activity 生命周期

一.简介

是Android的四大组件之一,它提供了与用户交互的机能.

Android Activity的生命周期,有例如下作用:

        1.在布局改变时不会打断用户

activity的切换过程中,用户数据不会丢失

        3.使得程序在各个阶段都能被需要的情况控制

activity在它的运行过程中存在生命周期,跟人幼年青年中年老年类似,不同的阶段进行转换或者说过渡的,activity都是通过调用一些方法来实现的

:

android activity 是否存活 安卓activity的生命周期_移动


每个阶段分别对应的方法如下:

onCreate();onStart();onResume();onPause();onStop();onDestroy();onRestart();


二.具体方法


    1.onCreate():这个方法必须调用并且在里面需要进行初始化重要的组成部分,例如需要显示的交互界面setContentView();可以看到这个方法传递的参数是一个Bundle对象,并且有个解析这个对象的过程,这是个状态存储键值对对象,如果之前设置过(这就是一个这个程序上一次执行保存的数据),这是用来获取到Bundle里存放的数据,然后设置到界面,相当于恢复到上次退出的状态.

android activity 是否存活 安卓activity的生命周期_移动_02


2.onStart():这个方法就是activity在可以进行交互之前,进行的最后准备,这个方法不应该停留很久,通常可以用来初始化有关UI的代码.

    3.onResume():当准备工作做完,当前的activity与用户进行交互的时候,activity调用onResume(),此时,这个activity在activity栈的最上层(用户能看到的界面)并且能够获取到用户在屏幕上进行点击输入等等操作,而且大多数的app的核心代码在这里实现. 这个方法还可以用来恢复在系统onPause()重新返回当前界面的时候释放掉的资源,例如一个相机app,在打开摄像头的构成中返回,再返回过来.




android activity 是否存活 安卓activity的生命周期_初始化_03


   

4. onPause():这个阶段可以说是一个观望期,这个阶段可能是因为离开了这个界面,例如点击了home键,点击了顶部刚刚接受到的信息,这个阶段中需要释放资源,但不可以进行类似于访问网络/操作数据库等相关操作,这个阶段可能非常短暂,保存数据等等操作,更应该在onStop()里操作,接下来有可能会回到onResume(),也有可能会进行onStop();

有几种可能会到这个阶段:

        1.返回

        2.被应用程序打断

,只能有一个焦点,不能同时操作多个屏幕

activity出现了

进行资源的释放:



android activity 是否存活 安卓activity的生命周期_初始化_04



当activity完全不可见后,就调用这个方法,接下来后可能会进行onRestart()或者onDestroy(),在这个阶段,可以用来进行释放资源的操作,例如ui资源和一些会导致内存泄露的资源,在这个阶段还可以直接结束进程,就跳过了执行onDestroy()方法.当在onStop()中的操作都执行完毕后,activity对象就被保存在内存中,并且保持着所有状态和信息,但不会收到窗口管理,也就是不会显示到显示器,当执行onRestart()的时候,会把内存中这些信息重新自动部署到原来的状态,是不需要执行初始化操作的.

    6.onRestart():当activity即将重新打开时,调用onRestart()方法,这个方法里存放了之前退出的数据,接下来就是重复从onResume()的操作了.

    7.onDestroy():当activity彻底关掉的时候,调用这个方法,这个方法里需要确保的是所有activity的资源都已经被释放了,否则有可能出现内存泄漏.destroy有可能是被调用关闭也有可能是系统暂时关闭节约资源,当横竖屏幕改变的时候也会调用这个方法,但又迅速调用onCreate()方法.


三.示例

1.onCreate()->onStart()->onResume()

android activity 是否存活 安卓activity的生命周期_移动_05


2.onResume()->onPause()->onStop().    onPause()与onStop()几乎是同时出现的,onPause()过程很短暂.

android activity 是否存活 安卓activity的生命周期_初始化_06


3.onRestart()->onStart()->onResume().    onStart()与onStop()几乎是同时出现的,onStart()过程很短暂.

android activity 是否存活 安卓activity的生命周期_Android_07




4.onPause()->onStop().    此时可以看出在短信界面跳转出来的过程中,onPause()持续存在了一段时间,并且等短信界面完全覆盖后才出现了onStop(),所以onPause()可以说一个观望期

android activity 是否存活 安卓activity的生命周期_生命周期_08


5.onDestroy()

android activity 是否存活 安卓activity的生命周期_Android_09