`
黄继华
  • 浏览: 43541 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

Actibivity的生命周期

 
阅读更多

有许多人对Activity的生命周期理解的不够透彻,希望下面的文字能你们带来一定的帮助。

首先看看android developers 网上的activity的生命周期图:

1. Activity启动的时候:onCreate ---> onStart ---> onResume 这个过程大家都知道,我就不多讲了。

2.接下来我主要讲讲:何时onPause, 何时onStop,何时onDestory; 以及恢复的时候,何时onRestart,何时onResume。

为了方便大家理解,根据以下示例来进行讲解,如下图

Activity04为当前的Activity,SecondActivity为第二个Activity。

通过Activity的生命周期图我们可看出Activity在Running状态跳转到OnPause状态的原因是:Another activity comes in front of the activity.也就是说:另一个activity启动并运行了;

比如说通过startActivity启动了SecondActivity,那么SecondActivity就在ui视图的最顶层了,而Activity04不再是最顶层的activity了,此时就会onPause了,此时我们依然还能看到Activity04,只是Activity04已经站在他人之后了。

而当Activity04完全被SecondActivity挡住,完全看不见的时候,此时Activity04就会onStop了。Activity的生命周期图可以看出onPause到onStop的原因是:the activity is no longer visiable. 也就是说此时Activity04完全不可见了,从这里我们可以猜测当按下home键的时候,当前activity就会处于onStop的状态。

从actvitiy的生命周期图中,我们可以看出activity是可以停留在onPause和onStop在这两个状态上的,因为可以相应的恢复。

3.那么何时停留在onPause,何时停留在onStop呢?

下图的Activity04就是处于onPause状态:


因为这里的SecondActvity是dialog样式:
<activity android:name=".SecondActivity" android:theme="@android:style/Theme.Dialog">
也就验证了当Activity04不再在最顶端,但仍然可见的时候,Activity04就处于onPause状态,此时如果退出(back键)second activity,那么Activity04就会onResume。


下图的Activity04就是处于onStop状态(注意,这里的ThirdActivity是在Activity04中通过ThirdActivity 按钮启动的):



因为此时Activity04已经完完全全被ThridActvity挡住了,完全不可见了,所以Activity04处于onStop状态,如果此时退出ThridActivity(back键),那么Activity04就会onRestart().


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



对于activity生命周期图的左侧部分:

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


示例下载 Activity_04.rar





分享到:
评论

相关推荐

    基于Selenium的Java爬虫实战(内含谷歌浏览器Chrom和Chromedriver版本116.0.5808.0)

    资源包括: 1.Java爬虫实战代码 2.selenium学习笔记 3.代码演示视频 4.谷歌浏览器chrom116.0.5808.0 chrome-linux64.zip chrome-mac-arm64.zip chrome-mac-x64.zip chrome-win32.zip chrome-win64.zip 5.谷歌浏览器驱动器Chromedriver116.0.5808.0 chromedriver-linux64.zip chromedriver-mac-arm64.zip chromedriver-mac-x64.zip chromedriver-win32.zip chromedriver-win64.zip 特别说明:Chrome 为测试版(不会自动更新) 仅适用于自动测试。若要进行常规浏览,请使用可自动更新的标准版 Chrome。)

    2024消费趋势报告.pdf

    2024消费趋势报告.pdf

    PCB的电磁兼容设计+电子设计领域

    1、EMC由EMI和EMS组成 2、EMS常见的整改措施 3、干扰=共模干扰+差模干扰 4、元器件的摆放 5、缝隙影响

    给排水施工图全套.xdw.pdf

    给排水施工图全套.xdw

    基于微信小程序的旅游出行必备(后端接口ssm框架实现)-毕设项目

    毕业设计基于微信小程序的旅游出行必备(后端接口ssm框架实现)-毕设项目.zip 个人经导师指导并认可通过的高分设计项目,评审分98分。主要针对计算机相关专业的正在做毕设的学生和需要项目实战练习的学习者,也可作为课程设计、期末大作业。 项目介绍: 旅游出行必备项目, 前端为微信小程序,后端接口为ssm框架实现,项目包含源码、数据库毕业设计基于微信小程序的旅游出行必备(后端接口ssm框架实现)-毕设项目.zip 个人经导师指导并认可通过的高分设计项目,评审分98分。主要针对计算机相关专业的正在做毕设的学生和需要项目实战练习的学习者,也可作为课程设计、期末大作业。 项目主要功能: 该项目是一个基于微信小程序的旅游出行应用,结合后端SSM(Spring MVC + Spring + MyBatis)框架提供服务。主要功能包括行程规划、景点信息查询、在线预订等,旨在为用户提供便捷的旅游出行体验。特点在于利用微信小程序的便捷性,实现即用即走,同时通过后端强大的数据处理能力保证服务稳定性。技术栈涵盖微信小程序开发、Java SSM框架、数据库管理等,适合学习和作为毕业设计参考。

    MC/00000000000000000000000000

    Want to play MC but do not want to buy can download to have a look。 It's very interested ------------------------------------------------------------------------------------------------- ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo

    2024嵌入式面试资料SPI子系统

    2024嵌入式面试资料SPI子系统提取方式是百度网盘分享地址

    电子迎宾器和声光控照明开关multsim仿真和课设报告

    设计报告 ——题目名称:电子迎宾器 ——题目名称: 声光控照明开关

    基于Selenium的Java爬虫实战(内含谷歌浏览器Chrom和Chromedriver版本115.0.5789.0)

    资源包括: 1.Java爬虫实战代码 2.selenium学习笔记 3.代码演示视频 4.谷歌浏览器chrom115.0.5789.0 chrome-linux64.zip chrome-mac-arm64.zip chrome-mac-x64.zip chrome-win32.zip chrome-win64.zip 5.谷歌浏览器驱动器Chromedriver115.0.5789.0 chromedriver-linux64.zip chromedriver-mac-arm64.zip chromedriver-mac-x64.zip chromedriver-win32.zip chromedriver-win64.zip 特别说明:Chrome 为测试版(不会自动更新) 仅适用于自动测试。若要进行常规浏览,请使用可自动更新的标准版 Chrome。)

    基于Selenium的Java爬虫实战(内含谷歌浏览器Chrom和Chromedriver版本115.0.5785.0)

    资源包括: 1.Java爬虫实战代码 2.selenium学习笔记 3.代码演示视频 4.谷歌浏览器chrom115.0.5785.0 chrome-linux64.zip chrome-mac-arm64.zip chrome-mac-x64.zip chrome-win32.zip chrome-win64.zip 5.谷歌浏览器驱动器Chromedriver115.0.5785.0 chromedriver-linux64.zip chromedriver-mac-arm64.zip chromedriver-mac-x64.zip chromedriver-win32.zip chromedriver-win64.zip 特别说明:Chrome 为测试版(不会自动更新) 仅适用于自动测试。若要进行常规浏览,请使用可自动更新的标准版 Chrome。)

    navicat下载、安装、配置.zip

    【navicat】下载、安装、配置

    2024嵌入式大厂面经东华软件2015年应届实习生毕业生招聘职位-公司

    2024嵌入式大厂面经东华软件2015年应届实习生毕业生招聘职位-公司提取方式是百度网盘分享地址

    C++ 高性能爬虫代码,带UI

    C++ 高性能爬虫代码,带UI

    2024年铁基非晶合金行业分析报告.pptx

    行业报告

    2024嵌入式大厂面经朝歌宽带笔试题

    2024嵌入式大厂面经朝歌宽带笔试题提取方式是百度网盘分享地址

    AutoRuns 查看设置开机自动加载程序、病毒木马及恶意插件程序等

    Autoruns for Windows 是 Mark Russinovich 和 Bryce Cogswell 开发的一款软件,它能用于显示在 Windows启动或登录时自动运行的程序,并且允许用户有选择地禁用或删除它们,例如那些在“启动”文件夹和注册表相关键中的程序。此外,Autoruns还可以修改包括:Windows 资源管理器的 Shell 扩展(如右键弹出菜单)、IE浏览器插件(如工具栏扩展)、系统服务和设备驱动程序、计划任务等多种不同的自启动程序。 Autoruns作为Sysinternals Suite(故障诊断工具套装)的一部分,可运行于 Windows XP、Windows Server 2003 和更高版本的 Windows 操作系统。该软件还包括一个相同功能的命令行版本Autorunsc,可以把结果报表以 CSV 格式输出。

    2024年市场展望与薪酬报告发布-randstad.pdf

    2024年市场展望与薪酬报告发布-randstad.pdf

    AIGC 之 AI 绘画:技术与应用双突破,生产力变革在即

    AIGC 之 AI 绘画:技术与应用双突破,生产力变革在即

    智能车竞赛介绍.docx

    智能车竞赛介绍.docx

    Android开发基本知识总结,Android课件pdf

    1.什么是Android? 移动设备(常常指手机mobile)的操作系统,由google公司出品,是免费的,最早是基于Linux平台的:目前已经推出的Android3.0是平板电脑上的操作系统。 其它的手机操作系统有:iPhone系统等。 手机厂商三星(Samsung,宏达电(HTC),摩托罗拉(Motorola),华硕,索尼,Garmin等都支持iPhone系统。 Android系统功能自定义用户界面,支持蓝牙,多点触摸,具有导航功能和语音识别功能结合了google 地图。Android 软件开发工具SDK4.0 Android系统特点:虚拟键盘,以WebKit为核心的WebView组件,可以使用HTML,javascript 等。

Global site tag (gtag.js) - Google Analytics