在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自己, 不能存在其他实例

最新文章

  1. Disk Space Usage 术语理解:unallocated, unused and reserved
  2. iOS 使用EZAudio库生成wav出错的情况
  3. linux系统的常用命令
  4. 将u盘的文件复制到虚拟机上的linux系统上面—》文件挂载(文字+图解)
  5. CABasicAnimation animationWithKeyPath 一些规定的值
  6. JS 的线程、事件循环、任务队列简介
  7. poj 2632 Crashing Robots_模拟
  8. Android开发效率的小技巧
  9. treeview 与tabControl组合使用
  10. XamarinForm Effects 调用事件
  11. Spring注解IOC/DI(4)
  12. Docker的基本概念
  13. Angular Beijing 发布
  14. web测试笔记
  15. java写桌面程序
  16. es6Math对象新增的方法
  17. HTML基本标记1.1
  18. 总结关于express vue-cli
  19. DataTables复杂表头
  20. JavaWeb-HttpServletResponse对象一

热门文章

  1. 关于CAShapeLayer的一些实用案例和技巧【转】
  2. linq group by多个字段,返回多个字段.
  3. grafana + influxdb + telegraf , 构建性能监控平台
  4. 编写bat(批处理文件)的优势
  5. WindowsService 安装 cmd
  6. php代码性能分析方法
  7. 级联两个bootstrap-table。一张表显示相关的数据,通过点击这张表的某一行,传过去对应的ID,刷新另外一张表。
  8. [CC]DgmOctree—执行Cell遍历和单元计算
  9. spark编写word count
  10. Testlink部署全攻略