android instance区别,Android singleTask 和singleInstance的区别
上周三去了网易面试被问到了这个问题,当时没有回答正确,回来以后特地写了一个程序研究一下。
关于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的区别相关推荐
- 【Android】SingleTask与SingleInstance的区别
现有2个项目,taskA.taskB.taskA负责调用taskB中指定的界面. taskB中有3个界面,a.b.c,每个界面显示它所在的task id. SingleTask: 其中b界面被声明为S ...
- Android Application Fundamentals——Android应用程序基础知识
Application Fundamentals--应用程序基础知识 Key classes--关键类 Activity Service BroadcastReceiver ContentProvid ...
- Android之Inflate()方法用途+setContentView和inflate区别
引用:http://blog.chinaunix.net/uid-27024249-id-3304935.html Android之Inflate()方法用途 Inflate()作用就是将xml定义的 ...
- android:layout_gravity 和 android:gravity 的区别
gravity 这个英文单词是重心的意思,在这里就表示停靠位置的意思. android:layout_gravity 和 android:gravity 的区别 从名字上可以看到,android:gr ...
- android中有关invisible,visible,gone的区别
在Android开发中,大部分控件都有visibility这个属性,其属性有3个分别为"visible "."invisible"."gone&quo ...
- 每日一道面试题(第7期)---Android补间动画与属性动画的区别
零零碎碎的东西总是记不长久,仅仅学习别人的文章也只是他人咀嚼后留下的残渣.无意中发现了这个每日一道面试题,想了想如果只是简单地去思考,那么不仅会收效甚微,甚至难一点的题目自己可能都懒得去想,坚持不下来 ...
- ANDROID 中UID与PID的作用与区别
ANDROID 中UID与PID的作用与区别 PID:为Process Identifier, PID就是各进程的身份标识,程序一运行系统就会自动分配给进程一个独一无二的PID.进程中止后PID被系统 ...
- android:windowBackground 和 android:background 的区别
通过问别人,我知道了android:windowBackground 和 android:background的区别 android:windowBackground 一般用于activity启动的时 ...
- c语言 long和short区别,5分钟读懂Android 中的toast short 和long的区别
android 中的toast short 和long的区别,在Android源码中的NotificationManagerService.java这个类中定义了两个静态变量,分别对应Toast.LE ...
- android:layout_gravity和android:gravity的区别
1.首先来看看android:layout_gravity和android:gravity的使用区别. android:gravity: 这个是针对控件里的元素来说的,用来控制元素在该控件里的显示位置 ...
最新文章
- pythonrequests发送数据_在python中使用requests 模拟浏览器发送请求数据的方法
- JZOJ 5163. 【NOIP2017模拟6.25】PS的烦恼
- SpringCloud环境搭建
- 华三云:不做开源的投机者
- 如何维持手机电池寿命_充电小知识:你知道如何正确充电吗?这几种充电方式最损害电池...
- Canvas事件绑定
- bean的作用域_Spring 框架基础(02):Bean的生命周期,作用域,装配总结
- 《编程之美》第2刷勘误
- Nginx禁止直接通过IP地址访问网站以及限制IP登陆某目录(关闭默认站点或空主机头)...
- jsp过滤器一点小结
- C++代码审阅--ice104协议从站(1)
- 三.求导四则运算及三角函数导数
- 寒假集训难题(四)QWQ和神奇的传送器nefu1608
- linux中的clock shew 问题的解决方法
- 力扣:电话号码的字母组合
- 苹果平板电脑成长历程
- 什么是自底向上/自上而下的显著性目标检测?
- Android百度地图水波纹动画,高德地图实现水波纹扩散
- HashSet集合保证元素唯一性原理分析
- 糟了,上网记录被 Python 扒下来了!