Activity 的启动模式
好久没用过那几种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 的启动模式相关推荐
- Android Activity的启动模式及对生命周期的影响
Activity的启动模式 官网解释链接 (tips:在阅读此文章前,应先对Activity生命周期掌握) 在每一个程序的main目录下有一个AndroidManifest.xml文件,这个文件是用来 ...
- Activity的启动模式详解
Activity的启动模式详解 Activity有四种载入模式:standard(默认), singleTop, singleTask和 singleInstance. (1).standard(默认 ...
- Android入门(六) | Activity 的启动模式 及 生产环境中关于 Activity 的小技巧
文章目录 Activity 的启动模式 standard singleTop singleTask singleInstance 技巧 了解当前界面是哪个 Activity 随时随地退出程序 启动活动 ...
- Android 源码分析 Activity的启动模式
一直想抽空针对AMS进行源码分析,无奈一方面因为很忙,另外AMS很复杂,涉及的知识点也比较多,今天利用五一假期对AMS的一个方面,Activity的启动模式进行源码分析,这里面包括了ActivityR ...
- Android中Activity的启动模式和使用场景
一.为什么需要启动模式 在Android开发中,我们都知道,在默认的情况下,如果我们启动的是同一个Activity的话,系统会创建多个实例并把它们一一放入任务栈中.当我们点击返回(back)键,这些A ...
- Activity(三)—— Activity的启动模式
Activity的启动模式 1 Activity的LaunchMode Activity为什么需要启动模式?在默认情况下,当我们多次启动同一个Activity的时候,系统会创建多个实例并把它们一一放入 ...
- 二、Activity 的启动模式
一.四种启动模式: ① standard(标准模式) 这个是系统的默认模式.在这种模式下,每次启动一个 Activity 都会重新创建一个新的实例,不管这个实例是否已经存在,并且谁启动了这个 Acti ...
- Activity的启动模式
题目:Activity的启动模式,区别 这道题想考察什么? 启动模式是什么? 启动模式如何设置? Activity的启动模式区别? 应用场景以及那些注意的点? 考察的知识点 启动任务,返回栈,启动模式 ...
- Activity的启动模式与flag详解
Activity有四种加载模式:standard(默认), singleTop, singleTask和 singleInstance.以下逐一举例说明他们的区别: standard:Activity ...
- Activity的启动模式总结
<activity android:name="ActivityMain" android:launchMode="singleTask">< ...
最新文章
- Symfony笔记之--控制器的快捷方法
- iPhone12要来了,苹果第一款5G手机,哪些值得期待?
- MySQL 搜索指定时间范围数据, 时间字段有索引但是还是很费时
- 全球首个知识增强千亿大模型鹏城-百度·文心发布
- springMVC 前台向后台传数组
- svn 自动同步到web站点目录post-commit.bat
- Javascript 对象一(对象详解)
- 【PAT】1001 害死人不偿命的(3n+1)猜想
- 微信语音麦克风静音_智能语音专题(二):语音信号处理
- 无线安全审计工具FruityWifi初体验
- 关于 librecad 的中文支持
- Isight多学科参数优化软件模块构成
- android夏时令问题
- Java基础篇--异常机制
- 兰博基尼推出全新混动超跑Revuelto
- 师范大学计算机专业研究生,2019考研调剂:福建师范大学计算机类学硕研究生调剂生...
- linux怎么设置永久变量,Linux环境变量永久设置方法(zsh)
- 三元(三目)运算符解释
- 7. 技术博客的开头,中间,结尾都该怎么写?
- 100年前的北京Vlog火了!AI修复古老纪录片还原逼真场景