您的位置:首页 > 其它

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的实例。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: