android中用到最多的就是activity,它也是android的四大组件之一,开发过程中也是最常用到的组件,所以我们有必要去掌握它在程序运行的生命周期是怎么回事

在了解activity的生命周期之前,先了解下它的活动状态,每个活动在生命周期中最多会有四种状态:

  1. 运行状态
    当一个活动位于任务栈的栈顶时,则该活动处于运行状态

  2. 暂停状态
    当一个活动不再处于栈顶位置,但依然可见时,则该活动就进入了暂停状态

  3. 停止状态
    当一个活动不再处于栈顶位置,并且完全不可见的时候,这时该活动就进入了停止状态

  4. 销毁状态
    当一个活动从任务栈中移除后就变成了销毁状态

在了解完活动状态后,再来看下活动的生命周期,activity类中定义了有七个回调方法,下面类介绍下这七个回调方法:

  1. onCreate()
    这个方法在activity出现的次数最多了,在活动中我们都会重写这个方法,它在活动第一次被创建的时候调用,所以在方法中完成活动的初始化操作,比如加载布局文件、初始化View、事件绑定等。

  2. onStart()
    在活动在屏幕上由不可见变为可见的时候该方法被调用。在这个时候界面是不可交互的。

  3. onResume()
    在活动准备好可以和用户进行交互的时候该方法被调用。此时的活动是处于任务栈的栈顶,并且处于运行状态

  4. onPause()
    在活动处于可见但不可见交互时候该方法被调用。在这个时候我们可以通过在这个方法中将一些消耗CPU的资源释放掉,以及保存活动状态。

  5. onStop()
    在活动完全不可见的时候该方法被调用。也就是完全被另一个活动覆盖了。

  6. onDestroy()
    活动被销毁之前调用。这之后活动就将变为销毁状态

  7. onRestart()
    在活动重新启动,也就是说该活动由停止状态变为运行状态时调用。

以上这个七个方法除了onRestart()方法之外,其他方法都是一一对应的,从而分为三类:

第一类:**onCreate()onDestroy()**两个方法是对应,onCreate()方法中完各种初始化操作,在onDestroy()方法中释放内存等操作。

第二类:**onStart()**和 **onStop()**两个方法对应,在这两个方法之间活动对于用户来说总是可见的。我们也可以通过这个两个方法类合理的管理对用户可见的资源,比如在onStart()方法中对资源的加载,在onDestroy()方法中对资源的释放,保存处于停止状态的活动不会占用过多的内存。

第三类:**onResume()onPause()**两个方法对应,在两个方法之间活动处于运行状态的并且可以和用户进行交互。


以上就是activity生命周期的理论知识,我们通过实践,看activity的七个回调方法在那种情况下会被调用,这也是我们在实际开发中所遇到的各种情况。

  • 第一种情况:当启动AActivity执行生命周期的情况:


    上图可以看到,当AActivity第一次启动的时候会一次执行onCreate()–>onStart()–>onResume()

  • 第二种情况:关闭AActivity时情况:


    上图可以看出,关闭一个活动依次执行AActivity的onPause()–>onStop()–>onDestroy()

  • 第三种情况:在AActivity界面中按home键,然后在进入AActivity时执行生命周期情况:


    如上图,按住home键时依次执行AActivity的onPause()–>onStop()
    在返回到AActivity界面的时候依次执行了AActivity的onRestart()–>onStart()–>onResume(),在这里注意下,应该AActivity活动处于停止状态,所以执行了onRestart()方法,而onCreate()方法不会执行,是因为AActivity并没有重新创建。

  • 第四种情况:在AActivity界面中按锁屏键,然后在进入AActivity时执行生命周期情况:


    如上图,在按住锁屏键和home键执行的生命周期是一样的,这里可以说明两个方式执行都是让AActivity活动变成停止状态,在进入时让AActivity活动从停止状态变成运行状态。

  • 第五种情况:从AActivity启动BActivity执行情况:


    如上图,在AActivity启动BActivity时,先后执行了AActivity的onPause()–>然后执行BActivity的onCreate()–>onStart()–>onResume()–>最后再执行AActivity的onStop()

  • 第六种情况:从BActivity中返回到AActivity时执行情况:


    如上图可以看出,在BActivity返回到AActivity时先后执行了BActivity的onPause()–>然后执行AActivity的onRestart()–>onStart()–>onResume()–>再执行BActivity的onStop()–>onDestroy(), 前面也提到了,这里还是要注意,之前AActivity处于停止状态,所以onRestart()方法会被执行,但是AActivity得onCreate()方法不会执行, 因为AActivity并没有重新创建。

  • 第七种情况:从AActivity启动一个Dialog的Activity(在这里称为DActivity),然后在返回AActivity时执行情况:


    如上图,在AActivity启动一个Dialog的Activity (这里注意了,这个DActivity是带有Dialog的透明背景的Avtivity,如果在AActivity上直接弹出Dialog则AActivity的生命周期都不会执行,因为在直接弹出Dialog时相当于在Window添加了一个View,所以不会对AActivity的生命周期有任何影响) 先后执行AActivity的onPause()–>然后执行DActivity的onCreate()–>onStart()–>onResume(),在这里可以看出AActivity界面是可见的,所以只执行了AActivity的onPause()方法
    在DActivity返回到AActivity的时候,先后执行了DActivity的onPause()–>然后执行AActivity的onResume()–>再执行DActivity的onStop()–>onDestroy()。

还有一些情况,当AActivity上带有一个Dialog时,按住home键执行的生命周期和情况三一样,按住锁屏键和情况四一样,这里就不做演示了

以上就是Activity活动所有生命周期调用情况,相信你通过上面的了解,对activity活动的生命周期有了更深入的了解。

详解android之activity的生命周期相关推荐

  1. 详解 Android 的 Activity 组件

    本文详细介绍了 Android 应用编程中 Activity 的生命周期.通信方式和 Intent Filter 等内容,并提供了一些日常开发中经常用到的关于 Activity 的技巧和方法.通过本文 ...

  2. android 英语论文,Android中Activity的生命周期英语论文+译文.doc

    Android中Activity的生命周期英语论文译文 北方民族大学 英文文献翻译 论文题目: Android环境及Activity介绍 院(部)名 称: 计算机科学与工程学院 学 生 姓 名: 陈 ...

  3. android Fragments详解六:处理fragement的生命周期

    把条目添加到动作栏 你的fragment们可以向activity的菜单(按Manu键时出现的东西)添加项,同时也可向动作栏(界面中顶部的那个区域)添加条目,这都需通过实现方法onCreateOptio ...

  4. Android开发---Activity的生命周期

    在Android开发中,第一步学习的应该是最基础的东西,即Activity的声明周期,相信Activity对于从事Android开发的朋友都很熟悉,这里作者不多做解释.Android的生命周期可以用如 ...

  5. Android 中 Activity 的生命周期

    接触 Android 有一段时间了,但是今天才去看 Activity 的生命周期,着实是因为在项目中用到了,需要去关闭释放一些数据. 以下内容来自网络,说的很直白,我就不用整理了 onCreate() ...

  6. Android 之 Activity 的生命周期(PS:文章多图,流量警告)

    前言: 本篇文章纯粹个人见解,如有错误或不到位的地方,请指出,多谢! 一般都会直接上官方生命周期图,我就不,皮一下好开心. 我先上我的效果图: 从我的效果图看出,一般的打开关闭操作.我也在每个生命周期 ...

  7. Android的Activity之生命周期

    Activity 简介  在讲解Activity之前,我先说一下为什么会有Activity这个组件.移动应用体验与桌面体验的不同之处在于,用户与应用的互动并不总是在同一位置开始,而是经常以不确定的方式 ...

  8. Android下Activity的生命周期

    Activity的生命周期如上图所示.当系统调用一个活动时,每个回调函数依次调用. 转载于:https://www.cnblogs.com/hainange/archive/2013/04/25/61 ...

  9. Android的activity的生命周期

    activity的生命周期有四个重要的状态:活动,暂停,停止,销毁 基本的方法有:onCreate.onStart.onResume.onPause.onStop.onDestory 最经常使用的方法 ...

最新文章

  1. ITK:复制非复合转换NonCompositeTransform
  2. 【客户故事】借助钉钉宜搭,奶茶店也开始用黑科技管理门店了
  3. 在JavaScript中将字符转换为ASCII代码
  4. 巧用 TypeScript(四)
  5. Python 过滤a文件中每一行内容,保存到b文件中
  6. Spring Boot干货系列:(十二)Spring Boot使用单元测试
  7. Idea 格式化代码-配置
  8. sap abap开发从入门到精通_SAP顾问≠程序员
  9. Java 生成 验证码图片
  10. 翁凯java进阶_多项式加法——mooc《零基础学Java语言》-(浙大翁凯)第五周编程题...
  11. 【RFID】RFID的标准体系
  12. dosbox基础使用
  13. CSS-animation-梦幻西游小案例
  14. 怎样理解封装,继承,多态!三者的区别?
  15. 1000+常用Python库大全,太实用了!
  16. html5中display flex,display:flex属性
  17. vivo6.0系统设备最完美激活xposed框架的教程
  18. mac tableau 安装mysql驱动
  19. linux得到网卡mac地址,获取 linux 网卡MAC地址(包含编程方法)
  20. 表复制:SELECT INTO 和 INSERT INTO SELECT

热门文章

  1. OpenMV:02追小球的云台
  2. 系统网络安全从良好意识习惯开始
  3. Alien Skin ExposureX7中文版RAW照片编辑器和组织器
  4. 压力变送器你知道多少?
  5. cmd命令行初始位置修改
  6. 删除字符串的大写字母c语言,将字符串大写字母变小写 C语言 字符串中大小写字母转换...
  7. 李银河:外表规矩 内心不羁
  8. linux带头像通讯录软件,这款微信小程序,拯救空白了很久的通讯录头像!
  9. 人工智能与能源行业的革命
  10. 用PowerBuilder制作指示灯