关于Activity的四种启动模式

Activity的四种启动模式standard,singleTop,singleTask,singleInstance

Activity什么都不配置,默认的模式是standard;一般都会设置属性launchMode = "四种启动模式之一"。默认情况一个app是根据包名来创建任务栈的

1、standard标准模式:如果把一个activity设置成该模式,则在启动该activity时候,会创建新的activity实例(只要启动就会创建)。所以对于标准模式的一个activity,在一个任务栈中的不同位置可能会存在不同的实例(所有实例处理一个Intent对象)

2、singleTop模式:如果任务栈中没有,则会创建一个新的activity实例,如果任务栈已经有且在栈顶则不新建实例,如果任务栈中有但是不在栈顶,则会创建新的activity实例。这也是singleTop和standard模式的区别

3、singleTask模式:对于 SingleTask模式的Activity,它在堆栈底端,其上方可以有其他Activity被创建, 但是,如果发给该Activity的Intent对象到来时该Activity不在堆栈顶端,那么该Intent对象将被丢弃,但是界面还是会切换到当前的Activity

4、singleInstance模式:对于 singleInstance模式的Activity, 任务的Activity堆栈中如果有这样的Activity,那它将是堆栈中的唯一的 Activity, 当前任务收到的 Intent 都由它处理, 由它开启的其他 Activity 将在其他任务中被启动

singleTask 和 singleInstance模式的Activity 仅可用于启动任务的情况, 这种模式的Activity总是处在Activity堆栈的最底端,并且一个任务中只能被实例化一次

android:taskAffinity属性默认是false  在启动一个activity的时候设置Intent.FLAG_ACTIVITY_NEW_TASK这个属性(如果android:taskAffinity=true,则会在新的任务栈中创建,否则该标记不起作用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值