首先咱必须知道,activity是以栈(后进先出)的结构进行管理的。

当活动A启动了活动B时,A被压入到栈内,B在栈的最顶层。当B调用finish()结束活动时,B从栈弹出,此时A在栈的最顶层。

我们可以在AndroidManifest.xml文件的activity节点,通过指定android:launchMode="standard"属性来实现启动模式的变更。

好,了解活动是如何管理的,那么咱就来了解下,活动的4种启动模式。

1:stand

如果不指定启动模式的话,都是用此标准型启动模式。比如我们启动了活动A,不管栈里面是否已经存在A,A都会被重新创建一遍压入栈。

2:singleTop

顶层活动唯一。比如我们启动了活动A,此时如果栈的最顶层已经存在了A,那么此时就直接使用A。

3:singleTask

栈内活动唯一。和2最大的区别是,此模式不管你活动在栈的什么位置,只要启动A的时候发现A已经在栈内了,在A上面的活动全部被销毁(生命周期比如onDestory也会被执行),直接使用A

4:singleInstance

新创建一个栈来管理此活动。

比如我们指定了活动B启动模式为singleInstance, A、C默认使用stand;以A -> B -> C顺序来启动三个活动后:

C活动finish()后,返回的是A(而不是B,因为管理B的栈独立于AC);A活动finish()后,这时当前的栈已经空了,于是就找到了其他栈(也就是活动B所在的栈)。

最新文章

  1. Lua 排行榜更新
  2. 6-05使用SQL语句删除数据
  3. uniq,sort,
  4. Android开发者的Git&GitHub(二)
  5. RabbitMQ学习总结 第一篇:理论篇
  6. jenkins smtp设置调试
  7. Dubbo架构设计详解--转载
  8. 20个linux命令行工具监视性能(上)
  9. @Transactional失效的问题
  10. Java设计模式偷跑系列(十八)建模和责任链模式的实现
  11. JavaScript面向对象基础语法总结
  12. JVM基础(5)-垃圾回收机制
  13. html基础知识笔记
  14. Server-U FTP与AD完美集成方案详解
  15. 校园服务nabcd需求分析
  16. Redis(二)冰叔带你了解Redis-哨兵模式和高可用集群解析
  17. CF-517C-思维/math
  18. 关于dumper和mysqldump的
  19. 使用vim编程步骤
  20. 20155311《网络对抗》PC平台逆向破解(二)

热门文章

  1. Spring中Adivisor和Aspect的差别(自我理解)
  2. STL 源代码剖析 算法 stl_algo.h -- inplace_merge
  3. Android无线测试之—UiAutomator UiScrollable API介绍四
  4. IOS实现打电话后回调
  5. 在VS2013下如何配置DirectX SDK的开发环境_百度经验
  6. css做鼠标指向图片图片放大但边框不放大
  7. ISP (互联网服务提供商)
  8. 用Dialog 做自定义动画,加播放监听
  9. SQL Server中执行Sql字符串,返回执行结果
  10. hashCode和equals方法的区别与联系