- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Android 7.0 ActivityManagerService(2) 启动Activity的过程:一
一、基础知识
在分析Activity的启动过程前,有必要先了解一下Activity相关的基础知识。
1、Task和Activity的设计理念
关于Android中Task和Activity的介绍,个人觉得《深入理解Android》中的例子不错。
我们就借鉴其中的例子,进行相应的说明:
上图列出了用户在Android系统上想干的三件事,分别用A、B、C表示。
在Android中,每一件事可以被看作是一个Task;一个Task可以被细分成多个子步骤,每个子步骤可以被看作是一个Activity。
从上图可以看出,A、B两个Task使用了不同的Activity来完成相应的任务,即A、B两个Task的Activity之间没有复用。
但是在Task C中,分别使用了Task A中的A1、Task B中的B2。
这么设计的原因是:用户想做的事情(Task)即使完全不同,但是当细分Task为Activity时,就可能出现Activity功能类似的情况。
当Task A和Task B中已经有能满足需求的Activity时,Task C就会优先复用而不是重新创建Activity。
通过重用Activity可以节省一定的开销,同时为用户提供一致的界面和用户体验。
对Android的设计理念有一定的了解后,我们看看Android是如何组织Task及它所包含的Activity。
上图为一个比较经典的示例:图中的Task包含4个Activity。用户可以单击按钮跳转到下一个Activity。同时,通过返回键可以回到上一个Activity。
图中虚线下方为Activity的组织方式。从图中可以看出,Android是以Stack的方式来管理Activity的。
先启动的Activity成为栈底成员,被启动的Activity将作为栈顶成员显示在界面上。
当按返回键时,栈顶成员出栈,前一个Activity成为栈顶显示在界面上。
以上是一个Task的情况。当有多个Task时,Android系统只支持一个处于前台的Task,其余的Task均处于后台。
这些后台Task内部Activity保持顺序不变。用户可以一次将整个Task挪到后台或置为前台,如下图所示:
在AMS中,将用ActivityRecord来作为Activity的记录者、TaskRecord作为Task的记录者,TaskRecord中有对应的ActivityStack专门管理ActivityRecord。
2、启动模式
Android定义了4种Activity的启动模式,分别为Standard、SingleTop、SingleTask和SingleInstance。
Standard模式
我们平时直接创建的Activity都是这种模式。
这种模式的Activity的特点是:只要你创建并启动了Activity实例,Android就会向当前的任务栈中加入新创建的实例。退出该Activity时,Android就会在任务栈中销毁该实例。
因此,一个Task中可以有多个相同类型的Activity(类型相同,但不是同一个对象)。
Standard模式启动Activity的栈结构如下图所示:
SingleTop模式
这种模式会考虑当前要激活的Activity实例在任务栈中是否正处于栈顶。
如果处于栈顶则无需重新创建新的实例,将重用已存在的实例,
否则会在任务栈中创建新的实例。
SingleTop模式启动Activity的栈结构如下图所示:
注意:当用SingleTop模式启动位于栈顶的Activity时,并不会创建新的Activity,但栈顶Activity的onNewIntent函数将被调用。
SingleTask模式
在该种模式下,只要Activity在一个栈中存在,那么多次启动此Activity都不会重新创建实例。和SingleTop一样,系统也会回调其onNewIntent。
具体一点,当一个具有singleTask模式的Activity A请求启动后,系统先会寻找是否存在A想要的任务栈。
如果不存在对应任务栈,就重新创建一个任务栈,然后创建A的实例后,把A放到任务栈中。
如果存在A所需的任务栈,那么系统将判断该任务栈中是否有实例A。
如果有实例A,那么系统就将A调到栈顶并调用其onNewIntent方法(会清空A之上的Activity)。
如果没有实例A,那么系统就创建实例A并压入栈中。
SingleTask模式启动Activity的栈结构如下图所示:
SingleInstance模式
您可能关注的文档
- 2016河南对口高考化工类专业课试题.doc
- 2016电算化章节练习题(第一章).doc
- 2016浙大远程计算机应用基础(A)作业3(含答案).docx
- 2016最新财经法规讲义.doc
- 2016电算化章节练习题(第二章).doc
- 2016电算化讲义(第一章).doc
- 2016电算化讲义(第二章).doc
- 2016百万公众网络学习.doc
- 2016继续教育《全面营改增会计核算方法与技巧》限时考试试题.doc
- 2016秋华师作业《比较文学原理》.docx
- 深度解析(2026)《ISO 22002-12025食品安全前提方案—第1部分:食品制造》.pptx
- 深度解析(2026)《ISO 22002-52025食品安全前提方案—第5部分:运输和储存》.pptx
- 深度解析(2026)《ISO 22002-42025 食品安全前提方案 — 第4部分:食品包装制造》.pptx
- 徒步活动策划方案.doc
- 深度解析(2026)《ISO 22002-62025食品安全前提方案—第6部分:饲料及动物食品生产》.pptx
- 2026年新版郯城期末真题卷.doc
- 深度解析(2026)《ISO 22476-72012岩土工程勘察与测试 — 现场测试 — 第7部分:钻孔千斤顶试验》.pptx
- 深度解析(2026)《ISO 22090-22014 船舶与海洋技术 — 航向传送装置(THD) — 第2部分:地磁原理》.pptx
- 深度解析(2026)《ISO 23584-22012 光学和光子学 — 参考字典规范 — 第 2 部分:类与特性定义》:构建智能制造数据基石的专家视角与未来展望.pptx
- 深度解析(2026)《ISO 22932-92025 Mining — Vocabulary — Part 9 Drainage》:构建未来矿山“水脉”治理与可持续发展的新语言体系.pptx
最近下载
- (通 用)中考英语写作优秀范文必背篇(word版).docx VIP
- 2026届八省联考(T8联考)2026届高三年级12月检测训练数学试卷(含答案详解).docx
- 统编版高中语文选择性必修中册教学课件《为了忘却的记念》.pptx VIP
- 2025年适老化衣柜安全设计收纳方案.docx VIP
- 心血管-肾脏-代谢综合征(CKM)综合管理中国专家共识2025解读PPT课件.pptx VIP
- 新疆大学2023-2024学年第1学期《高等数学(上)》期末考试试卷(A卷)附参考答案.pdf
- 2022年度广州经营性用地供地蓝皮书_解密.pdf VIP
- 颅内肿瘤 ppt课件.pptx VIP
- 2024-2025学年北京市西城区七年级上学期期末英语试卷(含详解).pdf VIP
- 2 2024年XXXXXXX医院胸痛中心现场核查迎检实施方案.pdf VIP
原创力文档


文档评论(0)