【声明】

欢迎转载,但请保留文章原始出处→_→

生命壹号:http://www.cnblogs.com/smyhvae/

文章来源:http://www.cnblogs.com/smyhvae/p/3856555.html

【正文】

一、Activity的生命周期:

解释如下:

activity启动的时候:onCreate ---> onStart ---> onResume.
      为了方便说明这里把当前activity称为MainActivity,其他的activity称为SecondActivity、ThirdActivity等等。
      通过上图的我们可以看出activity从running状态跳转到onPause状态的原因是:Another activity comes into the foreground. 也就是说有另外一个actvity被启动并运行了,比如说MainActivity通过startActivity启动了SecondActivity,那么SecondActivity就在ui视图的最顶层了,而MainActivity不再是最顶层的activity了,此时就会onPause了,此时我们依稀还能看到MainActivity,只是MainActivity已经站在他人之后了。

而当MainActivity完全被SecondActivity挡住,完全看不见的时候,此时MainActivity就会onStop了。我们看看上图从onPause到onStop的原因是:the activity is no longer visiable. 也就是说此时MainActivity完全不可见了,从这里我们可以猜测当按下home键的时候,当前activity就会处于onStop的状态。
从actvitiy的生命周期图中,我们可以看出activity是可以停留在onPause和onStop在这两个状态上的,因为可以相应的恢复。

当在MainActivity中按back键,退出时,最终就会走到onDestory,或者在代码中调用finish()的时候也会走到onDestroy这一步。

当MainActivity处于onPause和onStop状态时,当更高优先级的apps需要内存,而此时系统内存不够了,那么android系统就会将MainActivity所在的进程给杀了以释放资源。当然被杀了之后,想重生,那必须得从头来过: onCreate ---> onStart() ---> onResume().

二、成对儿的生命周期函数:(相同的颜色表示一对)

绘制表格如下:

生命周期函数

调用时机

举例

onCreate

在Activity对象被第一次创建时调用

买车

onStart

当Activity变得可见时调用

打火,启动

onResume

当Activity开始准备和用户交互时调用

踩油门,驱动汽车前进

onPause

当系统即将启动另外一个Activity之前调用

松开油门

onStop

当前Activity变得不可见时调用

熄火

onDestroy

当前Activity被销毁之前调用

车辆报废

onRestart

当一个Activity再次启动之前调用

 

一个Activity的对象的生命周期可类比于人的生命周期。一个阶段将调用对应的生命周期函数,即每个阶段需要做每个阶段应该做的事。

注意:生命周期函数是由系统调用的。开发人员只需要复写函数中的内容即可。

三、Activity对象的状态:

Resumed:Activity对象出于运行状态。

Paused:另一个Activity位于前端,但是本Activity还可见。

Paused状态常用于:另一个Activity为对话框,弹出来之后只占据了屏幕的一小部分;但后面的Activity还是可见的,但是处于paused状态。

注:一个Activity出于paused状态时,系统并不会释放资源。释放资源你的操作要靠开发者来完成。

Stopped:另一个Activity位于前端,完全遮挡本Activity。

官方文档解释如下:

Managing the Activity Lifecycle

Managing the lifecycle of your activities by implementing callback methods is crucial to developing a strong and flexible application. The lifecycle of an activity is directly affected by its association with other activities, its task and back stack.

An activity can exist in essentially three states:

Resumed
The activity is in the foreground of the screen and has user focus. (This state is also sometimes referred to as "running".)
Paused
Another activity is in the foreground and has focus, but this one is still visible. That is, another activity is visible on top of this one and that activity is partially transparent or doesn't cover the entire screen. A paused activity is completely alive (the Activity object is retained in memory, it maintains all state and member information, and remains attached to the window manager), but can be killed by the system in extremely low memory situations.
Stopped
The activity is completely obscured by another activity (the activity is now in the "background"). A stopped activity is also still alive (the Activity object is retained in memory, it maintains all state and member information, but isnot attached to the window manager). However, it is no longer visible to the user and it can be killed by the system when memory is needed elsewhere.

If an activity is paused or stopped, the system can drop it from memory either by asking it to finish (calling its finish() method), or simply killing its process. When the activity is opened again (after being finished or killed), it must be created all over.

四、举一个实例:

现在有两个Activity,当用户点击当前默认的MainActivity中的按钮后,会跳到SecondActivity。生命周期如下:

启动默认Activity时:

MainActivity:onCreate

MainActivity:onStart

MainActivity: onResume

点击按钮后,跳到SecondActivity:(MainActivity被保留至栈底)

MainActivity:onPause

SecondActivity:onCreate

SecondActivity:onStart

SecondActivity: onResume

MainActivity: onStop

按返回菜单后,回到MainActivity:(SecondActivity被销毁)

SecondActivity: onPause

MainActivity:onRestart

MainActivity:onStart

MainActivity: onResume

SecondActivity: onStop

SecondActivity: onDestroy

参考链接:http://www.cnblogs.com/hibraincol/archive/2012/03/06/2382120.html

我的公众号

想学习代码之外的软技能?不妨关注我的微信公众号:生命团队(id:vitateam)。

扫一扫,你将发现另一个全新的世界,而这将是一场美丽的意外:

Android组件系列----Activity的生命周期相关推荐

  1. Android四大组件之——Activity的生命周期(图文详解)

        转载请在文章开头处注明本博客网址:http://www.cnblogs.com/JohnTsai       联系方式:JohnTsai.Work@gmail.com       [Andro ...

  2. Android 组件系列-----Activity生命周期

    本篇随笔将会深入学习Activity,包括如何定义多个Activity,并设置为默认的Activity.如何从一个Activity跳转到另一个Activity,还有就是详细分析Activity的生命周 ...

  3. Android开发之Activity的生命周期详解

    Android生命周期分为两部分: (1)典型情况下的生命周期. (2)异常情况下的生命周期. 典型情况下的生命周期分析 ​图1 Activity的生命周期图解 ​图2 Activity生命周期的金字 ...

  4. 重温Android四大组件(一)—Activity的生命周期

    前言 四大组件对于Android开发者是老生常谈的知识了,相信每个Android开发者对四大组件都已经很熟悉了.但是四大组件作为Android应用的基础,作为开发者不仅要熟悉而且要烂熟于心. 这里以& ...

  5. Android四大组件之一Activity的生命周期

    Activity的七大生命周期 onCrate 不可见不可交互. onStart 可见不可交互 . onResume 可见可交互 . onPause 可见不可交互 .onStop 不可见不可交互 . ...

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

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

  7. Android 组件系列-----Activity的传值和回传值

    在这篇随笔里将讲解Activity的传值和回传值. 一.通过startActivity来进行Activity的传值 在Android中,如果我们要通过一个Activity来启动另一个Activity, ...

  8. Android 组件系列-----Activity初步

    在上篇博文讲解了Android的Activity这个组件的启动流程后,接下来我们就来看看我们的Activity与我们的布局文件的关系吧 我们先来看看一个最简单的布局文件的内容: <Relativ ...

  9. Android组件系列-----Activity保存状态

    本篇随笔将详细的讲解Activity保存状态的概念,也就是saving activity state. 一.Activity状态保持概念 保存Activity的状态是非常重要的,例如我们在玩一个游戏的 ...

最新文章

  1. 图形交互界面_人机交互界面UI简介
  2. Windows 10 PowerCL 使用 VMwme-PowerCLI安装说明
  3. MATLAB实战系列(三)- 如何将MATLAB直接转成C/C++代码
  4. C语言文件读写(5)-文件位置相关
  5. Php和Mysql乱码问题
  6. 宋体字体是什么_Win10 系统替换 macOS 苹方字体 - 瞬间提升文字清晰
  7. 通过动效学习UI设计
  8. GDB同步显示源代码——layout
  9. Python使用多进程批量判断素数
  10. Atitit 通过调用gui接口杀掉360杀毒 360卫士  qq保镖等难以结束的进程(javac# php )
  11. 【转】《Unity Shader入门精要》冯乐乐 随书彩图
  12. plc顺序控制设计法是什么?
  13. 如何快速理清大型项目业务逻辑
  14. 立创开源 | 恒温加热台
  15. w ndows7调亮度快捷键,Windows7电脑亮度怎么调?
  16. 【热搜词方案】android/java热搜词方案设计
  17. 中英文停止词表(stopword)
  18. ApacheCN 翻译、校对、笔记整理活动(有偿)进度公告 2022.7
  19. 【BZOJ】1778: [Usaco2010 Hol]Dotp 驱逐猪猡
  20. java 持久监听blockqueue的变化_Curator目录监听

热门文章

  1. 简单实现迷你Vue框架
  2. JQuery Basic Features Quick Walkthrough
  3. vue-cli watch/timer
  4. 迭代器、生成器、装饰器
  5. Spring源码剖析——Bean的配置与启动
  6. 排序的稳定性(概念明晰)
  7. 搭建通用性多用户后台-思路
  8. struts2框架从数据库批量取得数据集并在前台页面循环显示
  9. mac 10.9.5 安装hadoop 1.2.1 运行wordcount
  10. 被墙怎么搭建安卓开发环境