activity活动的四种启动模式

参考郭霖的《第一行代码》第二版。。。下文图片截图于此书 org
一个activity的启动模式是在AndroidManifest.xml注册活动时进行配置的。

        <activity
           android:launchMode="standard"
        </activity>

共有四种模式—>
standard 这也是系统默认的模式,该模式每次都会创建新的activity活动,不管栈中是否存在。比如说栈顶是A1活动 要跳到A1这个活动,就会创建一个新的A1.
这里写图片描述

解决上述总是不断创建新的活动事例的缺点—>
SingleTop 第二种启动模式
这种启动模式创建新的活动时要先检查栈顶是否是要创建的活动,如果是则不创建,如果不是(即使栈中存在只是却不位于栈顶而已) 则创建。
这里写图片描述

为了保证栈中只有一个活动的事例,解决SingleTop的问题—>
SingleTask第三种启动模式
这种启动模式在创建新的活动事例时会先查找栈中是否有要创建的活动事例,如果是有则为了将其处于栈顶的位置则把它以上的活动都退出栈。否则没有就创建新的活动事例。
这里写图片描述

最后一种启动模式—>
SingleInstance 这个启动模式
使用一个 返回栈 处理一个activity活动事例使其能活跃在两个不同程序中不同的栈中,解决了共享活动事例的问题。
这里写图片描述

此图中FirstActivity 和ThirdActivity 的启动模式均是默认standard
secondActivity模式是SingleInstance
onCreate 方法 均有—>

Log.d("XXXActivity---------->", "taskのId"+getTaskId());

获取打印栈的id语句。
从FirstActivity跳到secondActivity在跳到ThirdActivity 会得到

08-23 08:11:49.551 26303-26303/jp.co.jmas.fristprogram D/FirstActivity---------->: taskのId410

08-23 08:11:57.447 26303-26303/jp.co.jmas.fristprogram D/SecondActivity---->: taskのId408

08-23 08:12:04.091 26303-26303/jp.co.jmas.fristprogram D/ThirdActivity--->: taskのId410

即 secondActivity被id为408的返回栈管理。
分析—>
点击返回时 ThirdActivity从id为410的栈推出—->之后FirstActivity从id为410的栈推出
最后才是SecondActivity 被从返回栈推出。。。。

因为FirstActivity 和ThirdActivity在同一栈中,当ThirdActivity被推出时自然FirstActivity推到了栈顶,显示出,可与用户直接交互。。。再点击返回则FirstActivity被推出栈,这时位于返回栈栈顶的SecondActivity显示出,可与用户直接交互。
以上です。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值