Activity的四种加载模式
2015-05-30 22:04
211 查看
activity的四种加载模式
Activity默认的加载模式是Standard模式,但是这种简单的模式远远无法满足我们应用开发的需要。为了打破默认的堆栈这种后进先出的简单模式,提供了2种方式,一种是在AndroidManifest.xml文件中声明加载它的方式,另一种是在Intent开启一个activity时,加入标记。后者的优先级更高。
4种加载方式:
1.standed模式:就是标准的洗碗模式,不管是什么碗往上摞就是了
2.SingleTop模式:判断新启动的activity和位于栈顶的activity是否相同,如果相同则不会产生activity的实例,只是调用
onNewIntent()函数;如果不同的话,则产生新的activity实例并将其放置于栈顶。(洗碗时如果新碗和最上面的玩相同的话就不放了,不同的话放在最上面)
3.SingTask(单任务模式):
2种情况:
1同一个应用中:
A->B->C->D->B (实际上CD都被销毁掉,在B中按回退,直接回到A中)
2不同的应用中:(1,2表示不同的APP)
1A->2B->2C-2D->2B(实际上2C2D都被销毁,在2B中按back键重新回到1A)
拓展一下:
1A->2B-2C-2D-2B-1A(这个时候,按back键直接退出程序回到桌面)
4.在SingleInstance模式:(保证在一个task[任务]中,只有一个activity的实例)
1在同一个应用中(1,2指的是不同的task)
A1->B2->C1->D1->B2(按back键的返回时B2->D1-C1-A1)
分析:
①A1->B2 产生新的task2,并将activityB放置于 task2中
②A1->B2->C1 产生新的activityC 将其置于 task1中(不是task2中哟!!)
③。。。。
④A1->B2->C1->D1->B2 先去task2中搜索,发现有activityB的实例,则将其调出来,同时调用onNewInetent函数。
按back键,则是B->D->C-A
2不用的应用中(①②表示不同的APP;3,4表示不同的task)
①A3->②B4->②C4->②D4->②B4
分析:按回退键back键:B->D->C->A
------------------------------------------------------------------------------------
总结一下:
standard:拿来主义(哪里需要去哪里)
①可以多次实例化
②相同的activity可以重叠
singtop:拒绝叠罗汉
①可以多次实例化
②相同的activity不可以重叠,顶部activity相同时调用onNewIntent()方法
singleTask:独立门户
①不同的activity运行多次实例化
②调用activity时,如果该activity已经在task中实例化,则会将其上的其他activity全部销毁,该activity同时调用onNewIntent()方法
③不同的APP中同理
singleInstance():孤独寂寞
①不可以多次实例化
②不可以有activity的重叠
③加载activity时如果没有实例化,首先创建新TASK,然后实例化后入栈;一个task中只允许一个activity的实例。
相关文章推荐
- javascript基础
- perl函数substr
- JAVA编码规范
- myBatis的SQL注入问题
- Manacher算法:求解最长回文字符串,时间复杂度为O(N)
- 无废话WCF入门教程三[WCF的宿主]
- 无废话WCF入门教程四[WCF的配置文件]
- C语言高级语法概述笔记
- [MFC]CPen画笔类、CBrush画刷类、背景颜色和背景模式
- alpha阶段总结
- 无废话WCF入门教程二[WCF应用的通信过程]
- 第12周项目4-圆与点的关系
- 移动web前端小结
- 进制转换
- Windows文件类型
- getLocationInWindow和getLocationOnScreen的区别
- Spring 事务机制详解
- VMware Tools在linux下的安装方法
- 各个日志框架之间的关系
- PHP E-mail