Activity的启动模式

  1. Activity的启动模式

    1. Activityde LaunchMode

首先说一说Activity为什么需要启动模式?

当我们多次创建相同的一个activty时,系统会创建多个实例,一一的添加到任务栈中,当我们返回的时候,由于任务栈是先进后出,所以会一一的回退。所以面临的问题是,多次创建相同的acitivty系统就重复创建多个实例。

1.四种模式

  1. standard  标准模式

每次启动一个activity都会重新创建一个新的实例,不管这个实例是否已经存在。

  1. singleTop 栈顶复用模式

如果新的Activity已经位于任务栈的栈顶,那么次activity不会被重新创建。

  1. singleTask 栈内复用模式

判断该任务栈中是否存在你想要的实例,如果存在,在这个实例之上的实例都抛出当前任务栈,如果不存在,就重新创建一个新的实例,压入栈中。(系统判断是否存在新的Activity想要的任务栈,如果不存在,就重新创建一个新的任务栈,如果存在新的任务栈想要的任务栈)

  1. singleInstance:单实例模式

这是一种加强版的sinleTaskk模式,除了具有singleTask模式的所有特性之外,还加强了一点,具有此种模式的activity只能单独地位于一个任务栈中,(activity是singleInstance模式,A启动后创建一个新的任务栈,然后A独自在这个任务栈中,栈内复用的特性,后续请求不会创建新的Activity,除非这个任务栈被销毁)

    1. 如何给Activity指定启动模式(两种方式)
  1. 第一种通过AndroidMenifest为activity指定启动模式:
  2. 通过代码中在Intent中设置标志位来为activty指定启动模式:

区别:

优先级上第二种方式高于第一种

限定范围上有所不同,在清单文件中无法直接设定FLAG_ACTIVITY_CLEATR_TOP标识,第二种方式无法为Activity指定singleInstance模式。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值