上周三去了网易面试被问到了这个问题,当时没有回答正确,回来以后特地写了一个程序研究一下。

关于Android activity的启动模式一共有四种 standard singleTop singleTask singleInstance 这四种

standard 和singleTop都比较好理解,这里主要研究一下 singleTask singleInstance的区别

首先是:singleTask

假设有两个Activity 分别是A 和 B ,Activity A的启动模式是standard Activity B的启动模式是singleTask, A中可以启动B,同时B中也可以启动A

通过A 启动B ,可以发现 A B的taskId是相同的,说明A和B运行在同一个栈里面,然后通过B启动A 此时的A也是在这个栈里,现在这个栈里从栈底到栈顶的顺序依次是 A—B—A,之后通过A再次启动B这个时候B的lanchMode就起作用了。通过测试发现 栈里不会产生新的B的实例,以前的时候起总以为栈里是这样的 A—A—B (ps:当时 面试的时候我就是这样回答的)实际运行结果是 A—B 中间的A直接被销毁了。

接着是:singleInstance

假设有两个Activity 分别是A 和 B ,Activity A的启动模式是standard Activity B的启动模式是singleInstance, A中可以启动B,同时B中也可以启动A

通过A启动B,可以发现A B的taskId是不相同的,说明A启动B的时候产生了一个新的栈,B运行在一个新的栈里面,时候通过B再次启动A  现在两个栈里面的情况分别是 这样的,原来的栈:A—A 新的栈:B

然后通过A再次启动B可以发现在新的栈里并没有产生新的B的实例  新的栈依旧是:B 只不过B被显示到了最前面;

总结:singleTask 和singleInstance的区别是:singleTask不会产生新的栈, singleInstance第一次调用的时候则会产生新的栈, singleTask模式下 如果原来的栈里已经存在要调用的Activity的实例,下次调用的时候会销毁中间所有的Activity。

原文:http://www.cnblogs.com/gejs/p/4341336.html

android instance区别,Android singleTask 和singleInstance的区别相关推荐

  1. 【Android】SingleTask与SingleInstance的区别

    现有2个项目,taskA.taskB.taskA负责调用taskB中指定的界面. taskB中有3个界面,a.b.c,每个界面显示它所在的task id. SingleTask: 其中b界面被声明为S ...

  2. Android Application Fundamentals——Android应用程序基础知识

    Application Fundamentals--应用程序基础知识 Key classes--关键类 Activity Service BroadcastReceiver ContentProvid ...

  3. Android之Inflate()方法用途+setContentView和inflate区别

    引用:http://blog.chinaunix.net/uid-27024249-id-3304935.html Android之Inflate()方法用途 Inflate()作用就是将xml定义的 ...

  4. android:layout_gravity 和 android:gravity 的区别

    gravity 这个英文单词是重心的意思,在这里就表示停靠位置的意思. android:layout_gravity 和 android:gravity 的区别 从名字上可以看到,android:gr ...

  5. android中有关invisible,visible,gone的区别

    在Android开发中,大部分控件都有visibility这个属性,其属性有3个分别为"visible "."invisible"."gone&quo ...

  6. 每日一道面试题(第7期)---Android补间动画与属性动画的区别

    零零碎碎的东西总是记不长久,仅仅学习别人的文章也只是他人咀嚼后留下的残渣.无意中发现了这个每日一道面试题,想了想如果只是简单地去思考,那么不仅会收效甚微,甚至难一点的题目自己可能都懒得去想,坚持不下来 ...

  7. ANDROID 中UID与PID的作用与区别

    ANDROID 中UID与PID的作用与区别 PID:为Process Identifier, PID就是各进程的身份标识,程序一运行系统就会自动分配给进程一个独一无二的PID.进程中止后PID被系统 ...

  8. android:windowBackground 和 android:background 的区别

    通过问别人,我知道了android:windowBackground 和 android:background的区别 android:windowBackground 一般用于activity启动的时 ...

  9. c语言 long和short区别,5分钟读懂Android 中的toast short 和long的区别

    android 中的toast short 和long的区别,在Android源码中的NotificationManagerService.java这个类中定义了两个静态变量,分别对应Toast.LE ...

  10. android:layout_gravity和android:gravity的区别

    1.首先来看看android:layout_gravity和android:gravity的使用区别. android:gravity: 这个是针对控件里的元素来说的,用来控制元素在该控件里的显示位置 ...

最新文章

  1. pythonrequests发送数据_在python中使用requests 模拟浏览器发送请求数据的方法
  2. JZOJ 5163. 【NOIP2017模拟6.25】PS的烦恼
  3. SpringCloud环境搭建
  4. 华三云:不做开源的投机者
  5. 如何维持手机电池寿命_充电小知识:你知道如何正确充电吗?这几种充电方式最损害电池...
  6. Canvas事件绑定
  7. bean的作用域_Spring 框架基础(02):Bean的生命周期,作用域,装配总结
  8. 《编程之美》第2刷勘误
  9. Nginx禁止直接通过IP地址访问网站以及限制IP登陆某目录(关闭默认站点或空主机头)...
  10. jsp过滤器一点小结
  11. C++代码审阅--ice104协议从站(1)
  12. 三.求导四则运算及三角函数导数
  13. 寒假集训难题(四)QWQ和神奇的传送器nefu1608
  14. linux中的clock shew 问题的解决方法
  15. 力扣:电话号码的字母组合
  16. 苹果平板电脑成长历程
  17. 什么是自底向上/自上而下的显著性目标检测?
  18. Android百度地图水波纹动画,高德地图实现水波纹扩散
  19. HashSet集合保证元素唯一性原理分析
  20. 糟了,上网记录被 Python 扒下来了!

热门文章

  1. aspectjweaver.jar aspectjrt.jar
  2. 实验七 构件图和部署图
  3. 详细解说Java 技术的新纪元
  4. 滴滴+头条+网易游戏研发面经
  5. DOSBox下载安装
  6. 电子之220V有效值峰值峰峰值
  7. 电力系统微型计算机继电保护试题及答案,2011年4月全国自学考试电力系统微型计算机继电保护试题答案...
  8. 工程测量(地形图测量)
  9. 计算机地图制图符号制作的心得,计算机地图制图原理与方法——地图符号设计参考文档...
  10. 完全卸载vs2008