当前位置: 首页>移动开发>正文

Android Activity启动模式

文章目录

  • Android Activity启动模式
    • 概述
    • 四种启动模式
    • Intent标记
    • 二者区别

Android Activity启动模式

概述

Activity 的管理方式是任务栈。栈是先进后出的结构。

四种启动模式

启动模式说明适用场景
standard
标准模式
默认模式,每次启动Activity都会创建一个新的Activity实例,并放在栈顶。相对独立的界面
singleTop
栈顶复用模式
如果新建的Activity在栈顶,则会复用该Activity实例,并回调onNewIntent()方法。用于接收通的界面
singleTask
栈内复用模式
如果新建的Activity在栈内,则会复用该Activity实例,并回调onNewIntent()方法,并清除它上方的实例。全局的界面,如主界面
singIeInstance
单例模式
创建一个新任务栈,将新建一个Activity实例并放入新栈中,再次启动会回调onNewIntent()方法。单独隔离的界面,如地图界面

标准模式:

Android Activity启动模式,在这里插入图片描述,第1张

栈顶复用模式:

Android Activity启动模式,在这里插入图片描述,第2张

栈内复用模式:

Android Activity启动模式,在这里插入图片描述,第3张

单例模式:

Android Activity启动模式,在这里插入图片描述,第4张

在AndroidManifest中设置:

<activity
          android:launchMode="standard" />

Intent标记

标记说明
FLAG_ACTIVITY_NEW_TASK标准模式(standard),非Activity中启动Activity需要添加该属性
FLAG_ACTIVITY_SINGLE_TOP栈顶复用模式(singleTop)
FLAG_ACTIVITY_CLEAR_TOP启动模式为standard时,栈中存在该Activity实例,则重新创建一个新实例,并清除原实例上方的所有实例;启动模式为singleTop时,不会重建Activity,会调用onNewIntent()方法,并清除上方的所有实例。
FLAG_ACTIVITY_CLEAR_TASK必须配合FLAG_ACTIVITY_NEW_TASK使用,如果任务栈存在,则清空任务栈重新创建Activity实例,如果任务栈不存在,则新建任务栈并创建Activity实例。

使用:

intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP)

二者区别

  • 优先级不同:Intent标记的优先级高于Manifest设置。
  • 限定范围不同:Manifest不能设置FLAG_ACTIVITY_CLEAR_TOP,Intent无法设置singleInstance。

https://www.xamrdz.com/mobile/4qy1848737.html

相关文章: