一、活动生命周期的意义

Activity(活动)是一种可以包含用户界面的组件,主要用于与用户进行交互。也就是说,在用户与界面进行交互之前,必须要进行特定的初始化操作。再者,Android 操作系统是一个多任务(Multi-Task) 的操作系统,用户在听歌的同时也可以打开其他 app。但是每一个程序的开启都会耗费一定的系统资源,当运行的程序过多,系统资源又没有及时的回收,容易导致系统运行变慢甚至不稳定。

为了解决这些问题,Android 引入一个新的机制—生命周期 (Life Cycle) 。Android 应用程序的生命周期是由 Android 框架进行管理的,并不是由应用程序直接控制。每一个应用程序都会产生一个进程,当系统内存不足的时候,会依照优先级进行进程的回收。但是,无论是使用者还是开发者,都没有办法确定哪一个进程会被回收。为了防止数据丢失和其他问题,需要了解生命周期。

二、简介生命周期的七个阶段

Activity 类中定义了七个回调方法,覆盖了活动生命周期的每一个环节。

onCreate() (不可见)每个活动都会重写这个方法,他会在活动第一次被创建的时候调用。在这个方法中完成活动的初始化操作,比如加载布局,绑定事件等。

onStart() (可见)这个方法在活动由不可见变为可见的时候调用,只是活动还没有在前台显示。。

onResume()  (可见)这个方法在活动准备好和用户进行交互的时候调用,并且,当且活动处于返回栈的栈顶(稍后解释何为返回栈的栈顶),并处于运行状态。

onPause() (可见)这个方法在系统准备去启动或恢复另一个活动的时候调用(当前活动还在栈顶)。我们通常在这个方法中释放一些CPU资源并保存一些关键数据,但是,这个方法的执行一定要快,不然会影响到新的栈顶活动的使用。

onStop() (不可见)这个方法活动完全不可见的时候调用,活动仅在后台工作。他和 onPause() 的区别在于,如果新的活动是对话框式的(即没有完全覆盖这个界面),那么只有 onPause() 被调用, onStop() 方法则不会被调用。

onDestory() (不可见)这个方法在活动被销毁之前调用,在这之后活动将处于销毁状态,是生命周期最后执行的方法。

onRestart()  (可见)这个方法在活动由停止(Stop)状态变为运行(Start)状态之前调用,将活动由不可见变为可见,也就是活动被重新启动了。

为了加强理解,我们来做一个类比(建议自己思考)。活动的生命周期可以类比为一个人的生命周期。

onCreate 相当于一个人还在娘胎的阶段,完成必要的初始化工作,此时人还不可见。

onStart 于人出生了,此时他已经可见,但是还没有和这个社会产生互动。

onResume 人开始去工作,和社会产生了关系。

onPause 人由了自己的小孩(新的Activity),此时孩子在他的前面,他的行为孩子的抑制。

onStop 人到了一定岁数之后退休,和社会基本没有联系。

onRestart 人在退休之后,重新上班,回到 Start 状态,即准备和社会产生联系。

onDestory 很容易理解,就是去世。

三、返回(任务)栈。

前面我们讲到调用 onResume 方法的活动处于返回栈的栈顶,什么是返回栈呢?

我们知道,Android 中的活动是可以叠加的,当我们启动一个新的活动时,会将原先的活动覆盖。当我们按 back 键返回或者调用 finish() 方法时,会销毁最上面的活动,然后下面的活动就会显示出来。

其实,Android 是用一个任务(Task)来管理活动的,一个任务就是一组在栈中的任务的集合。这个栈就是返回栈,栈是一种后进先出的数据结构,并且,MainActivity 处于栈的最底端。在默认情况下,启动一个新的活动,他会在返回栈中入栈,并处于栈的栈顶。按 back 键或调用 finish() 方法后,这个活动就会出栈,系统总是会显示处于栈顶的活动。

四、具体讲讲jige 方法

onCreate()完成活动的初始化操作,如加载布局,绑定事件,调用 setContentView() 方法

onStart()

onResume()

onPause()

onStop()

onDesto

android 活动生命,Android 活动生命周期相关推荐

  1. 【Android】8.0活动的生命周期(一)——理论知识、活动的启动方式

    1.0 Android是使用任务(Task)来管理活动的,活动就像栈一样堆放着在一起. 每个活动的生命周期最多可能会有四种状态: 1.1 运行状态 位于栈顶 1.2 暂停状态 不在栈顶但在界面上仍处于 ...

  2. Android四大基本组件和生命周期的介绍

    Android四大基本组件分别是Activity,Service服务,Content Provider内容提供者,BroadcastReceiver广播接收器. 一:了解四大基本组件 Activity ...

  3. Android学习之碎片的生命周期

    一.碎片的状态: 1.运行状态:当一个碎片是可见的,并且它所关联的活动正处于运行状态时,该碎片也处于运行状态. 2.暂停状态:当一个活动进入暂停状态时(由于另一个未占满屏幕的活动被添加到了栈顶),与它 ...

  4. android fragment 覆盖,Android Fragment 替换覆盖生命周期方法详解

    FragMent add 与 replace 方法执行试图切换生命周期变化 Activity 生命周期中共有七个方法,Fragment 的生命周期方法 则有11个,一个Fragment 在Activi ...

  5. Android Application的使用及其生命周期

    摘要: 1. Application的使用 2. Application的生命周期 ---------------------------------------------------- 工程代码: ...

  6. Android教程 -06 Activity的生命周期

    本篇播客我们重点介绍下如下知识点: 程序启动原理 Activity生命周期 Activity销毁与创建 视频建议采用超清模式观看, 欢迎点击订阅我的优酷 height="498" ...

  7. Android笔记之Android基本控件布局与Activity的生命周期

    前言 喜欢安卓里千奇百怪的app,酷炫的UI或者好玩的游戏.想知道那些软件是如何做的,为什么我在微博里发一条消息,就能一直存在网上,让别人看到?为什么我点击一个按钮就出现了一个效果,某个功能?为什么滑 ...

  8. android四大组件之活动组件

    android四大组件之活动组件 活动组件的生命周期: 参考地址:https://blog.csdn.net/ttandroid/article/details/80926753 oncreate() ...

  9. 从0到1学android:四大组件—活动Activity

    点击上方"罗晓胜",马上关注,您的支持对我帮助很大 上期文章 从0到1学android:认识Android 逻辑题--特尔斐城的少女 /   前言   / 活动(Activity) ...

  10. Android基础知识——探究活动

    文章目录 1.活动的基本概念 2.活动的基本用法 2.1活动创建的完整流程 2.2在活动中使用Toast 2.3在活动中使用Menu 2.4销毁一个活动 3.使用Intent实现跳转活动 3.1适用显 ...

最新文章

  1. poj - 1651 Multiplication Puzzle
  2. 路由器无服务器无响应是怎么回事啊,wifi服务器无响应怎么解决(图文)
  3. setup hadoop 1.2.1 on Mac
  4. 用python定义一个员工类_Python:定义一个只有整数定义的类
  5. ibm aix_IBM AIX:Java进程大小监视
  6. 搭建IC设计EDA虚拟机服务器,忆往昔--集成门控时钟技术的前世--分离门控时钟技术...
  7. 计算机术语局部性,【计算机基础】程序的局部性简介
  8. JAVA WEB框架的错误体系
  9. kindeditor图片服务器php,kindeditor 粘贴网络图片保存到服务器
  10. Gartner 2021年IaaS+PaaS能力评估:亚马逊云科技排名第一
  11. java eventbus 原理_本文为 Android 开源项目实现原理解析 EventBus 部分,从源码分析 EventBus 的实现原理...
  12. bzoj 3384: [Usaco2004 Nov]Apple Catching 接苹果(DP)
  13. jQuery源码阅读(一)---jQuery源码整体架构
  14. 按3倍中误差去除粗差(C++)
  15. 鸡兔同笼c语言编程穷举,C语言程序设计100例之(1):鸡兔同笼
  16. 偏差-方差分解、损失函数和正则化
  17. [乐意黎原创]Win10 升级1909版本后,内存占用率居高不下的解决办法
  18. 助力白纸一般的你面试——宏任务微任务
  19. Golang操作阿里云OSS上传文件
  20. vue3项目名称报错

热门文章

  1. ubuntu18.0安装搜狗输入法无法显示中文
  2. antd中如何实现分页勾选记住之前的选项
  3. 微信小程序推广方式有哪些?
  4. qq邮箱发送html文本,使用qq邮箱发送html格式的邮件
  5. HTML点击图片播放音乐
  6. 软件测试怎么自学?史上最全的「软件测试」自学路线图+资源包
  7. 手机屏幕常见故障_触屏不灵敏、断触怎么回事?手机触摸屏的基本原理与常见问题排查方法介绍...
  8. javafx 教程_Swing和JavaFX:使用JFXPanel
  9. 海康摄像头,设置了分辨率参数,保存后又自动恢复,怎么办
  10. JavaScript实现网页截屏方法总结