好久没用过那几种activity的启动模式了,如今看到singletop竟然傻了眼,完全忘记了这几种启动模式的区别!隧将两年前的总结翻出来,通读一遍那晦涩难懂的记录,又理解了一遍,在以前记录的基础上,重新调整一下语句顺序和用词,并增加一些用来助记的理解。

首先,澄清一个概念,android中一组逻辑上在一起的activity被叫做task,自己认为可以理解成一个activity堆栈。在xml中可以配置那几种令人头大的启动模式(launch mode),不同的启动模式就决定了新的activity实例的逻辑位置。

我们先来介绍两个启动模式,他们分别是standard和singletop,  以这两种模式启动新的activity,新activity将属于当前的task,除非我们特殊指定了要放置在新的task中,这可以用设置FLAG_ACTIVITY_NEW_TASK 标志的方式实现。

除了以上介绍的两种启动模式,我们还有singletask和singleinstance两种模式,这两种的模式的activity只能存在于新的task中,就好像是天然地拥有FLAG_ACTIVITY_NEW_TASK 标志,从字面意义上看singletask是指新的activity实例只会存在于单独的task中,而singleinstance的字面意义上理解是只能存在单独的实例,在其所在的task中,不能有其他activity实例,很霸道吧!singletask就没这样的要求,它可以和别的activity的实例挤在同一个task中,但是自己的实例也只能有一个。

在接到新的intent请求时候,不同的启动模式的activity有不同的表现,standard模式的activity会生成新的实例来处里请求,而singletop的activity如果有实例在task的最顶端,那么它将会复用这个实例来处里请求,否则,产生新的实例,这可能是singletop名字的来历吧!singleinstance因为其所在task中只有它自己一个实例,所以可以轻松复用。至于singletask,如果新的intent请求到来时,singletask的实例在task的最顶端,那么复用此实例,如果没有,则不响应此请求,但是singletask的实例会被调到前台显示。

PS: 在代码中找不到设置launchmode的地方,只能在xml中设置它,这是为了保证在运行时一个activity的launchmode是不变的。

转载于:https://www.cnblogs.com/snake-hand/p/3184417.html

Activity 的启动模式相关推荐

  1. Android Activity的启动模式及对生命周期的影响

    Activity的启动模式 官网解释链接 (tips:在阅读此文章前,应先对Activity生命周期掌握) 在每一个程序的main目录下有一个AndroidManifest.xml文件,这个文件是用来 ...

  2. Activity的启动模式详解

    Activity的启动模式详解 Activity有四种载入模式:standard(默认), singleTop, singleTask和 singleInstance. (1).standard(默认 ...

  3. Android入门(六) | Activity 的启动模式 及 生产环境中关于 Activity 的小技巧

    文章目录 Activity 的启动模式 standard singleTop singleTask singleInstance 技巧 了解当前界面是哪个 Activity 随时随地退出程序 启动活动 ...

  4. Android 源码分析 Activity的启动模式

    一直想抽空针对AMS进行源码分析,无奈一方面因为很忙,另外AMS很复杂,涉及的知识点也比较多,今天利用五一假期对AMS的一个方面,Activity的启动模式进行源码分析,这里面包括了ActivityR ...

  5. Android中Activity的启动模式和使用场景

    一.为什么需要启动模式 在Android开发中,我们都知道,在默认的情况下,如果我们启动的是同一个Activity的话,系统会创建多个实例并把它们一一放入任务栈中.当我们点击返回(back)键,这些A ...

  6. Activity(三)—— Activity的启动模式

    Activity的启动模式 1 Activity的LaunchMode Activity为什么需要启动模式?在默认情况下,当我们多次启动同一个Activity的时候,系统会创建多个实例并把它们一一放入 ...

  7. 二、Activity 的启动模式

    一.四种启动模式: ① standard(标准模式) 这个是系统的默认模式.在这种模式下,每次启动一个 Activity 都会重新创建一个新的实例,不管这个实例是否已经存在,并且谁启动了这个 Acti ...

  8. Activity的启动模式

    题目:Activity的启动模式,区别 这道题想考察什么? 启动模式是什么? 启动模式如何设置? Activity的启动模式区别? 应用场景以及那些注意的点? 考察的知识点 启动任务,返回栈,启动模式 ...

  9. Activity的启动模式与flag详解

    Activity有四种加载模式:standard(默认), singleTop, singleTask和 singleInstance.以下逐一举例说明他们的区别: standard:Activity ...

  10. Activity的启动模式总结

    <activity android:name="ActivityMain" android:launchMode="singleTask">< ...

最新文章

  1. Symfony笔记之--控制器的快捷方法
  2. iPhone12要来了,苹果第一款5G手机,哪些值得期待?
  3. MySQL 搜索指定时间范围数据, 时间字段有索引但是还是很费时
  4. 全球首个知识增强千亿大模型鹏城-百度·文心发布
  5. springMVC 前台向后台传数组
  6. svn 自动同步到web站点目录post-commit.bat
  7. Javascript 对象一(对象详解)
  8. 【PAT】1001 害死人不偿命的(3n+1)猜想
  9. 微信语音麦克风静音_智能语音专题(二):语音信号处理
  10. 无线安全审计工具FruityWifi初体验
  11. 关于 librecad 的中文支持
  12. Isight多学科参数优化软件模块构成
  13. android夏时令问题
  14. Java基础篇--异常机制
  15. 兰博基尼推出全新混动超跑Revuelto
  16. 师范大学计算机专业研究生,2019考研调剂:福建师范大学计算机类学硕研究生调剂生...
  17. linux怎么设置永久变量,Linux环境变量永久设置方法(zsh)
  18. 三元(三目)运算符解释
  19. 7. 技术博客的开头,中间,结尾都该怎么写?
  20. 100年前的北京Vlog火了!AI修复古老纪录片还原逼真场景

热门文章

  1. java 实现类似spring的可配置的AOP框架
  2. nginx学习笔记之安装
  3. redis主从和集群搭建
  4. Linux下汇编语言学习笔记23 ---
  5. 总结篇——mysql中使用sql语句操作表字段
  6. Sql Server 分区
  7. Redis HyperLogLog命令,phpredis如何执行HyperLogLog命令
  8. linux删除文件后不释放磁盘的问题
  9. shall 基本语法
  10. Umbraco中的Examine Search功能讲解