Android组件系列----Activity的生命周期
【声明】
欢迎转载,但请保留文章原始出处→_→
生命壹号: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的生命周期相关推荐
- Android四大组件之——Activity的生命周期(图文详解)
转载请在文章开头处注明本博客网址:http://www.cnblogs.com/JohnTsai 联系方式:JohnTsai.Work@gmail.com [Andro ...
- Android 组件系列-----Activity生命周期
本篇随笔将会深入学习Activity,包括如何定义多个Activity,并设置为默认的Activity.如何从一个Activity跳转到另一个Activity,还有就是详细分析Activity的生命周 ...
- Android开发之Activity的生命周期详解
Android生命周期分为两部分: (1)典型情况下的生命周期. (2)异常情况下的生命周期. 典型情况下的生命周期分析 图1 Activity的生命周期图解 图2 Activity生命周期的金字 ...
- 重温Android四大组件(一)—Activity的生命周期
前言 四大组件对于Android开发者是老生常谈的知识了,相信每个Android开发者对四大组件都已经很熟悉了.但是四大组件作为Android应用的基础,作为开发者不仅要熟悉而且要烂熟于心. 这里以& ...
- Android四大组件之一Activity的生命周期
Activity的七大生命周期 onCrate 不可见不可交互. onStart 可见不可交互 . onResume 可见可交互 . onPause 可见不可交互 .onStop 不可见不可交互 . ...
- Android教程 -06 Activity的生命周期
本篇播客我们重点介绍下如下知识点: 程序启动原理 Activity生命周期 Activity销毁与创建 视频建议采用超清模式观看, 欢迎点击订阅我的优酷 height="498" ...
- Android 组件系列-----Activity的传值和回传值
在这篇随笔里将讲解Activity的传值和回传值. 一.通过startActivity来进行Activity的传值 在Android中,如果我们要通过一个Activity来启动另一个Activity, ...
- Android 组件系列-----Activity初步
在上篇博文讲解了Android的Activity这个组件的启动流程后,接下来我们就来看看我们的Activity与我们的布局文件的关系吧 我们先来看看一个最简单的布局文件的内容: <Relativ ...
- Android组件系列-----Activity保存状态
本篇随笔将详细的讲解Activity保存状态的概念,也就是saving activity state. 一.Activity状态保持概念 保存Activity的状态是非常重要的,例如我们在玩一个游戏的 ...
最新文章
- 图形交互界面_人机交互界面UI简介
- Windows 10 PowerCL 使用 VMwme-PowerCLI安装说明
- MATLAB实战系列(三)- 如何将MATLAB直接转成C/C++代码
- C语言文件读写(5)-文件位置相关
- Php和Mysql乱码问题
- 宋体字体是什么_Win10 系统替换 macOS 苹方字体 - 瞬间提升文字清晰
- 通过动效学习UI设计
- GDB同步显示源代码——layout
- Python使用多进程批量判断素数
- Atitit 通过调用gui接口杀掉360杀毒 360卫士 qq保镖等难以结束的进程(javac# php )
- 【转】《Unity Shader入门精要》冯乐乐 随书彩图
- plc顺序控制设计法是什么?
- 如何快速理清大型项目业务逻辑
- 立创开源 | 恒温加热台
- w ndows7调亮度快捷键,Windows7电脑亮度怎么调?
- 【热搜词方案】android/java热搜词方案设计
- 中英文停止词表(stopword)
- ApacheCN 翻译、校对、笔记整理活动(有偿)进度公告 2022.7
- 【BZOJ】1778: [Usaco2010 Hol]Dotp 驱逐猪猡
- java 持久监听blockqueue的变化_Curator目录监听