四种android:LanchMde模式

首先一定要理解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/

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值