activity的四种加载模式
在android里,有4种activity的启动模式,分别为: standard, singleTop, singleTask和singleInstance, 其中standard和singleTop类似, singleTask和singleInstance类似, 用法如下:
(1).standard和singleTop
这两种加载模式下, 同一个task中可以存在一个activity的多个实例, 并且可以位于activity栈的任意位置。
先举个例子:
假设目标task的activity栈为: A->B->C->D(栈底->栈顶)
在程序中调用startActivity(D)
如果D是standard模式, 则activity栈变为:
A->B->C->D->D, 也就是会重新创建一个D实例
如果D是singleTop模式, 则activity栈变为:
A->B->C->D, 不会创建D实例, 就是说如果D在目标task 的activity栈的栈顶, 则不会创建新的实例, 而是调用D的onNewIntent()方法, 反之如果D不在目标task 的activity栈的栈顶, 则会重新创建一个D实例
(2). singleTask和singleInstance
这两种加载模式下, 同一个task中只会存在一个activity的实例, 如果通过startActivity()启动,则调用onNewIntent()方法, 而不是创建一个新的实例。这两种模式下, activity实例均位于activity栈的栈底。
这两种加载模式的区别:
假设一个Activity的实例A 采用如下两种加载模式:
singleTask:
如果A调用startActivity(B)启动B实例, 则A和B位于同一个task中。
singleInstance:
如果A调用startActivity(B)启动B实例, 则系统会自动给intent添加一个属性FLAG_ACTIVITY_NEW_TASK, 将B实例放入到一个新的task中, 也就是说A实例所在的task中只能有A自己, 不能存在其他实例
最新文章
- Disk Space Usage 术语理解:unallocated, unused and reserved
- iOS 使用EZAudio库生成wav出错的情况
- linux系统的常用命令
- 将u盘的文件复制到虚拟机上的linux系统上面—》文件挂载(文字+图解)
- CABasicAnimation animationWithKeyPath 一些规定的值
- JS 的线程、事件循环、任务队列简介
- poj 2632 Crashing Robots_模拟
- Android开发效率的小技巧
- treeview 与tabControl组合使用
- XamarinForm Effects 调用事件
- Spring注解IOC/DI(4)
- Docker的基本概念
- Angular Beijing 发布
- web测试笔记
- java写桌面程序
- es6Math对象新增的方法
- HTML基本标记1.1
- 总结关于express vue-cli
- DataTables复杂表头
- JavaWeb-HttpServletResponse对象一
热门文章
- 关于CAShapeLayer的一些实用案例和技巧【转】
- linq group by多个字段,返回多个字段.
- grafana + influxdb + telegraf , 构建性能监控平台
- 编写bat(批处理文件)的优势
- WindowsService 安装 cmd
- php代码性能分析方法
- 级联两个bootstrap-table。一张表显示相关的数据,通过点击这张表的某一行,传过去对应的ID,刷新另外一张表。
- [CC]DgmOctree—执行Cell遍历和单元计算
- spark编写word count
- Testlink部署全攻略