Activity启动模式

          android:launchMode=["multiple" | "singleTop" |
                              "singleTask" | "singleInstance"]
211.98.2.4
61.233.9.61



那时年少 官路 曾许诺






android:launchMode="singleTask"
老肥(184589377)  11:07:20
比如我们有A,B, C, D四个Activity
老肥(184589377)  11:07:32
其中B的启动模式为singleTask
可可(77855072)  11:08:02

老肥(184589377)  11:08:10
我的Activity的启动分别为 A->B->C->D->C->B->A
老肥(184589377)  11:08:24
按返回就是A->B->A
老肥(184589377)  11:08:41
在堆栈里面,它记录了B的上一个Activity是A
老肥(184589377)  11:08:53
就最开始谁启动了B
老肥(184589377)  11:08:57
它就记录下那个
老肥(184589377)  11:09:02
其他的都不管
老肥(184589377)  11:09:36
当C->B的时候
老肥(184589377)  11:09:51
B以上的Activity被移出堆栈
老肥(184589377)  11:10:08
也就是此时栈里只有A和B


                  android:launchMode="singleTask"



singleInstance

例子:A->B->C->D->B->A

按返回键结果是:A->D->C->A->B

A->D->C->A在一个栈里,所以按返回键是这样的顺序

而B在一个独立的堆栈里面,当另外那个堆栈没了以后,才回到B的这个栈

例子:A->B->C->D->B->A
按返回键结果是:A->D->C->A->B

例子:A->B->C->D->B
按返回键结果是:B->D->C->A




singleTop
老肥(184589377)  11:26:39
就是如果是A->A
老肥(184589377)  11:26:46
这样就不会生成多一个实例
可可(77855072)  11:26:48
就是最后放上去的一个是把
老肥(184589377)  11:26:53
如果是A->B->A
老肥(184589377)  11:26:59
还是会生成新的


老肥 11:02:41
每个应用,可以有多个task
老肥 11:02:54
但一般情况下是只有一个task
老肥 11:03:01
每个task有一个taskId




singleTask的不能做被启动的Activity,可以做启动的Activity
singleInstance的都不能做。



11-21 17:02:19.964: E/AndroidRuntime(18763): android.util.AndroidRuntimeException: Calling startActivity() from outside of an Activity  context requires the FLAG_ACTIVITY_NEW_TASK flag. Is this really what you want?



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值