根据Activity在任务栈中的调用方式不同,Activity的启动模式分为4种,分别是Standard、SingleTop、SingleTask以及SingleInstance。可以在AndroidManifest.xml文件的android:launchMode属性中设置。

1、Standard模式:Standard模式是Android的默认启动模式。这种模式下,Activity每次启动,无论任务栈中是否已经有这个Activity的实例,系统都会创建一个新的Activity实例。

Standard模式图示

2、SingleTop模式:SingleTop模式和Standard模式非常相似,主要区别就是当一个SingleTop模式的Activity已经位于任务栈栈顶的时候,再去启动它时,则不会再创建新的实例,如果不位于栈顶,就会创建新的实例。

SingleTop模式图示

3、SingleTask模式: SingleTask模式的Activity在同一个Task内只有一个实例,如果Activity已经位于栈顶,系统不会创建新的Activity实例。当Activity已经存在但不位于栈顶时,系统就会把该Activity移到栈顶,并把它上面的Activity出栈。

SingleTask模式图示

4、SingleInstance模式:SingleInstance模式也是单例的,但和singleTask不同,SingleTask只是任务栈内单例,系统里是可以有多个SingleTask Activity实例的,而SingleInstance Activity在整个系统里只有一个实例,启动一各SingleInstance的Activity时,系统会创建一个新的任务栈,并且这个任务栈只有这一个Activity。

SingleInstance模式图示

android 启动模式_安卓学习笔记之Android中Activity的4种启动模式相关推荐

  1. Android学习笔记(十)——Activity的四种启动模式

    Standard标准模式 每启动一个Activity就创建一个新的实例,不管这个activity之前是否启动过,都创建一个新的 singleTop栈顶复用模式 singleTask栈内复用模式 sin ...

  2. Android中Activity的四种启动方式

    谈到Activity的启动方式必须要说的是数据结构中的栈.栈是一种只能从一端进入存储数据的线性表,它以先进后出的原则存储数据,先进入的数据压入栈底,后进入的数据在栈顶.需要读取数据的时候就需要从顶部开 ...

  3. android java与界面的关联_Android Studio安卓学习笔记(三)Android用户界面的设计布局与组件(一)用户界面布局设计(1)...

    当我们创建了一个安卓项目后,我们会发现真正建立一个完善的安卓项目并不是想象的那么容易.其实和设计GUI可视化界面一样,开发安卓也需要考虑很多方面,主要考虑的还是界面布局和需要的组件. 一:Androi ...

  4. Android Studio安卓学习笔记(三)Android用户界面的设计布局与组件(一)用户界面布局设计(1)...

    当我们创建了一个安卓项目后,我们会发现真正建立一个完善的安卓项目并不是想象的那么容易.其实和设计GUI可视化界面一样,开发安卓也需要考虑很多方面,主要考虑的还是界面布局和需要的组件. 一:Androi ...

  5. Android中Activity的四种启动模式

    每次看到这种专有词汇都十分佩服创造者的智慧,创造者一定和我一样都中二,我已然确信. 我写博客的目的,就是希望不断磨练自己,让自己能够不将一件简单的事情讲的复杂,让自己能将一件复杂的事情讲的简单.嘛嘛, ...

  6. 【安卓学习笔记】Android Handler 消息机制探究

    一.概述 1.android消息机制的含义: Android消息机制,其实指的就是 Handler 的运行机制,而 Handler 要正常运作,又需要底层的 MessageQueue , Looper ...

  7. sqllite开发安卓项目_安卓学习笔记(一)

    本人接触安卓也有一年半载了.本人是c++程序员,我对于安卓和java的态度就像,c++是大老婆,java和安卓是小老婆.但是大老婆总是让人不省心,所以安卓还是挺好玩的.那么接下来写写文章,记录一下安卓 ...

  8. python中csv文件把成绩加入_【学习笔记】python3中csv文件使用

    1. reader=csv.reader(f, delimiter=','):按行读取数据,reader为生成器,读取的每行数据为列表格式,可以通过delimiter参数指定分隔符. import c ...

  9. 学习笔记 --- 编码过程中常见的三种异步方式

    实际的编码过程中, 凡是涉及到网络通信的代码, 异步都是决不可缺少的. 那么什么是异步呢? 异步就是子线程, 异步通过开辟子线程来实现, 所以一提到异步就应该想到子线程. 即使不涉及网络通信, 异步也 ...

最新文章

  1. 服务压测发现怪异现象,一顿排查,揪出“TIME_WAIT”这个内鬼
  2. 太赞了!副业月入3W的技术大佬的公众号,学起来!
  3. 如果我睡着了请不要叫醒我
  4. 不是你无法入门自然语言处理(NLP),而是你没找到正确的打开
  5. java 多模块模块变灰色_到底谁需要Java模块?
  6. Windows Serivce服务实现过程和打包安装
  7. webpack4开始使用
  8. MYSQL 调优和使用必读
  9. C语言基础专题 - 存储类(编辑中)
  10. 关于nova-manage service list检测服务状态原理
  11. Oracle 角色权限表
  12. mysql5.6设置日志路径_mysql5.6.12切换binlog二进制日志路径_MySQL
  13. 考研英语到底该如何复习?
  14. uniapp中text-indent不起作用,uniapp首行缩进不管用如何解决?
  15. 计算机系微电子专业大学排名,微电子专业大学排名情况一览表
  16. educoder 2-2Python 计算思维训练——循环与列表(二)
  17. 程序员情人节脱单指南
  18. redis—redis概述
  19. 一度智信|拼多多客服售后须知
  20. 测试中常用的批处理命令

热门文章

  1. 解决HttpServletRequest的输入流只能读取一次的问题(转)
  2. 解决TensorBoard训练集和测试集指标只能分开显示的问题(基于Keras)
  3. 问题解决java.lang.IllegalArgumentException at org.springframework.asm.ClassReader
  4. tomcat报错LifecycleException的解决方案
  5. Docker映像和容器之间有什么区别?
  6. JavaScript检查null与undefined以及==和===之间的差异
  7. 带有JSON的杰克逊:无法识别的字段,未标记为可忽略
  8. 测试嵌套JavaScript对象键的存在
  9. 如何删除内联块元素之间的空间?
  10. 关于WordPress中字体加载慢的问题解决方案(转)