关闭

四种android:LanchMde模式

标签: androidLanchMode启动模式
214人阅读 评论(0) 收藏 举报
分类:

首先一定要理解android中task(任务)是一个栈结构的对象,可以存储Activity对象。

1.stander启动模式

在AndroidManifest.xml的activity标签中写入android:launchMode="standard"

然后在该acitivity中使用intent调用自己,并在TextView中显示this.toString(),自己的名称

会发现每按一次TextView所显示的序列号都是不一样的。

说明task栈中只存了多个Activity对象。


2.singleTop启动模式

在AndroidManifest.xml的第一个activity标签中写入android:launchMode="singleTop"

然后再建立第二个acitivity,由第一个activity调用第二个acitivity后,再返回第一个activity时会因为第一个acitivty不在栈顶,重新建立一个第一个activity。


3.singleTask启动模式

在AndroidManifest.xml的第一个activity标签中写入android:launchMode="singleTask"

然后再建立第二个acitivity,由第一个activity调用第二个acitivity后,再返回第一个activity时会因为第一个acitivty不在栈顶,而把比第一个acitivity高的对象都挤出去,使得第一个activity显示出来。


4.singleInstance启动模式

在AndroidManifest.xml的第一个activity标签中写入android:launchMode="stander",第二个activity标签中写入android:launchMode="singleInstance"

由第一个activity调用Intent进入第二个acitivity后,第二个acitivity会查看是否已经由存在一个新task栈只有第二个acitivity,如果没有的话就重新开辟一个新的task专门存放第二个acitivity,再由第二个acitivity调用Intent进入第一个acitivity,第一个acitivity还是原来的acitivity对象并没有新建,但当第一个acitivity调用Intent进入第二个acitivity时,新的task栈中会实例化新的第二个activity对象,如此循环往复。当点击back按钮时会从第一个acitivity退回新的task栈的栈顶,如果新的栈中被实例了5个第二个activity(相当于你前面已经五次通过Intent从第一个acitivity进入第二个acitivity中),那么就必须按5次back才会跳回,第一个acitivity的那个栈。

参考博客:http://blog.csdn.net/liuhe688/article/details/6754323/

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:1814次
    • 积分:81
    • 等级:
    • 排名:千里之外
    • 原创:6篇
    • 转载:2篇
    • 译文:0篇
    • 评论:0条
    文章分类
    文章存档