Android应用组件Activity是Android程序的呈现层,显示可视化的用户界面,并接收与用户交互所产生的界面事件。对于一个Android应用程序来说,可以包含一个或多个Activity,一般在程序启动后会呈现一个Activity,用于提示用户程序已经正常启动。当它不积极运行时,Activity可以被操作系统终止以节省内存。

Activity表现为4种状态,分别是活动状态、暂停状态、停止状态和非活动状态。

●  活动状态,Activity在用户界面中处于最上层,完全能被用户看到,能够与用户进行交互。
●  暂停状态,Activity在界面上被部分遮挡,该Activity不再处于用户界面的最上层,且不能够与用户进行交互;或者屏幕被锁定。
●  停止状态,Activity在界面上完全不能被用户看到,也就是说这个Activity被其他Activity全部遮挡。
●  非活动状态,不在以上3种状态中的Activity则处于非活动状态。

这四种状态是可以相互转换的,转换关系图如下图所示。

Android调用以下的事件回调方法通知Activity从某一状态转变到另一状态。

public class MyActivity extends Activity {protected void onCreate(Bundle savedInstanceState);protected void onStart();protected void onRestart();protected void onResume();protected void onPause();protected void onStop();protected void onDestroy();}

Activity生命周期的事件回调方法,如下表:

方法 是否可终止 说明
onCreate() Activity启动后第一个被调用的方法,常用来进行Activity的初始化,例如创建View、绑定数据或恢复信息等
onStart() 当Activity显示在屏幕上时,该方法被调用
onRestart() 当Activity从停止状态进入活动状态前,调用该方法
onResume() 当Activity能够与用户交互,接收用户输入时,该方法被调用。此时的Activity位于Activity栈的栈顶
方法 是否可终止 说明
onPause() 当Activity进入暂停状态时,该方法被调用。一般用来保存持久的数据或释放占用的资源
onStop() 当Activity进入停止状态时,该方法被调用
onDestroy() 在Activity被终止前,即进入非活动状态前,该方法被调用
onSaveInstanceState() Android系统因资源不足终止Activity前调用该方法,用以保存Activity的状态信息,供onRestoreInstanceState()或onCreate()恢复之用
onRestoreInstanceState() 恢复onSaveInstanceState()保存的Activity状态信息,在onStart()和onResume ()之间被调用

Activity事件回调方法的调用顺序,如下图所示:

全生命周期:从onCreate(Bundle)开始到onDestroy()结束。Activity在onCreate()设置所有的“全局”状态,在onDestory()释放所有的资源。例如:某个Activity有一个在后台运行的线程,用于从网络下载数据,则该Activity可以在onCreate()中创建线程,在onDestory()中停止线程。

可视生命周期:从onStart()开始到onStop()结束。在这段时间,可以看到Activity在屏幕上,尽管有可能不在前台,不能和用户交互。在这两个接口之间,需要保持显示给用户的UI数据和资源等,例如:可以在onStart中注册一个IntentReceiver来监听数据变化导致UI的变动,当不再需要显示时候,可以在onStop()中注销它。onStart(),onStop()都可以被多次调用,因为Activity随时可以在可见和隐藏之间转换。

活动生命周期:从onResume()开始到onPause()结束。在这段时间里,该Activity处于所有 Activity的最前面,和用户进行交互。Activity可以经常性地在resumed和paused状态之间切换,例如:当设备准备休眠时,当一个 Activity处理结果被分发时,当一个新的Intent被分发时。所以在这些接口方法中的代码应该属于非常轻量级的。

参考资料:

http://fasight001.spaces.eepw.com.cn/articles/article/item/95848#

http://blog.csdn.net/hpoi/article/details/4629065

转载于:https://www.cnblogs.com/ywtk/p/3951026.html

Activity 生命周期图解相关推荐

  1. 图解:Activity生命周期

    当用户需要对手机通过屏幕进行交互时,比如打一个电话,拍张照片,发送一个邮件,或者查看地图.开发者就需要实现一个活动(Activity).每个活动都将作为一个提供用户使用接口的窗口.它可以填满整个屏幕, ...

  2. 基础总结篇之一:Activity生命周期

    子曰:溫故而知新,可以為師矣.<論語> 学习技术也一样,对于技术文档或者经典的技术书籍来说,指望看一遍就完全掌握,那基本不大可能,所以我们需要经常回过头再仔细研读几遍,以领悟到作者的思想精 ...

  3. activity生命周期及数据保存

    为什么80%的码农都做不了架构师?>>>    public class ActivityLife extends Activity {// 在Activity生命周期开始时被调用@ ...

  4. Android activity生命周期

    这篇博客主要包含以下知识点: activity介绍. activity生命周期的详细过程(不同情况下的变化以及状态的改变).finish和onDestory方法的关系.onSaveInstanceSt ...

  5. framework之Activity 生命周期解析(基于Android11源码)

    引言 上一篇讲了Activity的创建过程(没看过的小伙伴移步 点我前往).由于篇幅的问题,只分析到OnCreate周期,那这一篇就接着讲余下部分的周期. 在高版本上,activity的周期都是以事务 ...

  6. View的生命周期方法和Activity生命周期方法关系

    View 是在Activity 中使用到的,所以在自定义View的时候,我们需要了解Activity 生命周期方法和View的生命周期方法调用先后顺序.  见如下图 (1) 在Activity onC ...

  7. activity 生命周期_死磕Android_App 启动过程(含 Activity 启动过程)

    1. 前言 Activity是日常开发中最常用的组件,系统给我们做了很多很多的封装,让我们平时用起来特别简单,很顺畅.但是你有没有想过,系统内部是如何启动一个Activity的呢?Activity对象 ...

  8. Android Activity生命周期举例说明(图文)

    同学电话面试提及到Activity生命周期的详细说明,现整理如下: 转载请标明姓名及出处:大飞_Rflyee - http://blog.csdn.net/rflyee/article/details ...

  9. 【Android 应用开发】Activity生命周期 与 Activity 之间的通信

    一. Activity生命周期 上图 1. Activity状态 激活状态 : Activity出于前台 , 栈顶位置; 暂停状态 : 失去了焦点 , 但是用户仍然可以看到 , 比如弹出一个对话框 , ...

最新文章

  1. Plant Physiol. | 中科院遗传所储成才研究组发现水稻NLR类抗病基因突变导致的白叶枯病感病机制...
  2. rhel6编译ssh的src.rpm包并修改spec参数
  3. Spring Boot处理静态资源(自定义资源映射)
  4. javascript --- spa初体验
  5. mysql geocode_百度地图Geocoding API获取特定地区或地址的经纬度信息,然后在MySql数据库多表循环遍历更新...
  6. php简单验证码实例,php结合GD库简单实现验证码的示例代码
  7. 认识Spring核心容器IoC/DI
  8. 敏捷开发用户故事系列之八:验收标准
  9. OpenGL基础54:点光源阴影
  10. python 求点集的距离矩阵
  11. 在线式极限学习机OS-ELM
  12. ML Mastery 博客文章翻译 20220116 更新
  13. C语言也能干大事第十四节(如鹏基础)
  14. 数学几何定理 与 13个基本不等式
  15. Echarts Map地图类型使用
  16. ISO工具集合,好用推荐,喜欢就下载使用
  17. 风险加权资产(RWA)分析管理系统
  18. 微服务电商项目技术全解析
  19. 中国轿车品牌如何突围之思 考
  20. Matlab 获取操作系统信息

热门文章

  1. POJ 3133 Manhattan Wiring(插头DP)
  2. 判断点是否在一个矩形内
  3. 日期和时间的正则表达式
  4. SoftGrid教程系列
  5. [Android 新特性] 有史来最大改变 Android 5.0十大新特性
  6. CentOS设置静态IP
  7. 【ExtJs】获取grid选中的records
  8. 状态(State)模式
  9. JFinal 调用 oracle 存储过程的 步骤
  10. Android----Google code android开源项目(二)