Activity启动模式总结
来源:互联网 发布:ubuntu没有文本输入 编辑:程序博客网 时间:2024/05/21 09:48
首先,感谢大家的分享,只有根据大家分享的经验,加上自己的体会,才能有一点点的总结哈!!!
Android中Activity的启动模式有四种,分别为standard、singleTop、singleTask、singlestance,设置系统的启动模式可以在AndroidManifest.xml中的<Activity>标签中添加如下属性:
android:launchMode="standard"
android:launchMode=”singleTop”
android:lauchMode=”singleTask”
android:lauchMode=”singleInstance”下面逐一分析下:
可以将statnder与singleTop模式规为一组,因为这两个模式之间存在这很多共性:
1 对于Activity而言,可以被创建多次,并且可以属于不同的task;
2 对于task而言,同一个task可以存放不同的Activity对象,并且可以同时存放多个同一个Activity的对象。
二者之间的区别为:
standard为默认模式,每次都会创建一个新的Activity对象,singleTop为当请求的Activity正处于栈顶时,则不重新创建该Activity;如果请求的Activity不处在栈顶,则会继续创建该Activity对象,并放入栈顶的位置。
可以将singleTask与singleInstance规为一组,他们之间的相同点为:
singleTask和singleInstance模式下,系统在同一时刻只会存在一个对应的Activity对象,即不存在时创建,存在时直接使用。
而二者的不同点是:
singleTask模式下允许Task中存在其他的Activity,但是singleInstance模式下Activity会独占一个task,即会为对应的Activity创建一个新的task,该task中只存在一个模式为singleInstance的Activity对象
而singleInstance就是我们常说的单例模式,通过这种模式启动的Activity会存在与一个单独的Task中。
在这四种模式中,让我比较困惑的就是singleTask模式,因为在一个task中,如果有一个Activity的启动模式为singleTask模式时,其他的Activity会被Destory掉,但是我之前一直没有发现这种情况,发现这一情况后,我就开始研究究竟有哪些Activity会在什么时候被Destory掉,慢慢的我找见了规律就是:
ActivityA ---> ActivityB(singleTask) --> ActivityC --> ActivityA --> ActivityB(singleTask)
如果按照上面的逻辑执行,当执行到最后一步时,ActivityA ,ActivityC 对象会被destory掉,也就是说,如果一个task中含有singleTask模式的Activity,当第二次调用该Acticty时,存在于两次调用之间的Activity都会被Destory掉,而在第一次启动singleTask模式的Activity之前启动的Activity不会受影响,并不是把栈中其余的Activity都destory掉,描述的不够清楚,请多理解下,不行的话可以写个例子试下!!!
也可以参考:
http://blog.csdn.net/yihongyuelan/article/details/7079959
http://blog.csdn.net/leiswpu/article/details/6248528
欢迎大家一起探讨!!!!
- Activity启动模式总结
- Activity启动模式总结
- Activity启动模式总结
- Activity启动模式总结
- Activity启动模式总结
- Activity启动模式总结
- Activity的启动模式总结
- 总结系列--Activity启动模式
- Activity启动模式相关总结
- Activity的启动模式总结
- Activity 的启动模式总结
- android 学习 Activity启动模式小总结
- Activity的启动模式(android:launchMode) 总结
- Android Activity 四种启动模式 总结
- Android总结之Activity启动模式
- Activity的生命周期和启动模式总结
- Android总结之Activity启动模式
- Activity四种启动模式总结
- jsp核心标签库2
- 我们一起学习Makefile
- HTML5 基础知识
- oracle的字符转义
- C# WinForm开发系列 - Crystal Report水晶报表
- Activity启动模式总结
- IE中怎么Enable Avtive Scripting
- 如何使用JSTL
- 存储相关名词
- 动态交叉编译openssl-0.9.8e 和 wpa_supplicant-0.7.3
- 倒计时功能的实现
- jsp标签库(3)
- 使用CPU时间戳进行高精度计时
- 整合 关于未能解析引用的程序集的警告 处理方式