Activity的四种launchMode(废弃)

1.目录

 

2. 启动模式的类别

Android启动提供了四种启动方式:
 

2.1.标准模式(standard)

2.2.栈顶复用模式(singleTop)

2.3.栈内复用模式(singleTask)

2.4.单例模式(singleInstance)

 

3.知识储备

 

3.1.Activity的管理是采用任务栈的形式。

3.2.任务栈采用“后进先出”的栈结构。

3.3.每按一次Back键,就有一个Activity出栈 。

 

 

 

4.具体介绍

 

4.1.标准模式(standard)

4.1.1.每启动一次Activity,就会创建一个新的Activity实例并置于栈顶。

4.1.2.谁启动了这个Activity,那么这个Activity就运行在启动它的那个Activity所在的栈中。

 

 

4.2 栈顶复用模式(singleTop)

4.2.1.如果需要新建的Activity位于任务栈栈顶,那么此Activity的实例就不会重建,而是重用栈顶的实例( 调用实例的 onNewIntent()  不调用onCreate()和onStart())。

4.2.2.否则就会创建该Activity新的实例,并放入栈顶。

 

 

4.3 栈内复用模式(singleTask)

逻辑如下图

需要的栈通过参数TaskAffinity决定。

 

 

4.4. 单例模式(singleInstance)

4.4.1.作为栈内复用模式(singleTask)的加强版。

4.4.2.打开该Activity时,直接创建一个新的任务栈,并创建该Activity实例放入新栈中。

4.4.3.一旦该模式的Activity实例已经存在于某个栈中,任何应用再激活该Activity时都会重用该栈中的实例。

4.4.4.让多个应用共享该栈中的该Activity实例。

 

 

 

 

4.5 四种启动模式图解

 

 

5. 四种启动模式的区别

5.1. 决定打开的任务栈

5.1.1.standard、singleTop启动模式的Activity的目标任务栈,和收到Intent的发送者在同一个任务栈内。

即如果Activity A启动了Activity B 那么A和B处在同一任务栈内。

5.1.2.singleTask启动模式打开的任务栈由参数TaskAffinity决定。

5.1.3.singleInstance启动模式总是新建任务栈,不会被启动到一个其他任务栈里。

 

5.2.是否允许多个相同的Activity实例

5.2.1.standard、singleTop启动模式中,同一个Activity可以被实例化多次,并且存在于不同的任务栈中,且一个任务栈可以包括同一个Activity的多个实例。

5.2.2.singleTask、singleInstance启动模式则限制只生成一个实例。

 

5.3. 是否允许不同的Activity实例存在于同一个任务栈内

5.3.1.singleInstance启动模式独占一个任务栈,其它Activity实例不能存在于该任务栈里。

5.3.2.另外三种模式,则可以和其它Activity实例共存于一个任务栈。

 

5.4.是否每次都生成新实例

5.4.1.standard模式:每次都生成新实例。

5.4.2.singleTop模式:若启动的Activity不在栈顶,则生成新实例。

5.4.3.singleTask模式:若启动的Activity不在栈内,则生成新实例。

5.4.4.singleInstance模式:所在栈的唯一Activity实例,只会实例化一次,以后每次都被重用。

 

 

 

6.启动模式的设置

启动模式有两种设置方式:
 

在AndroidMainifest设置

通过Intent设置标志位

 

6.1.在AndroidMainifest设置

在AndroidMainifest的Activity配置进行设置

 

6.2.通过Intent设置标志位

 

 

6.3. 二者设置的区别

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值