Android中Activity的4种加载模式

本文详细介绍了Android中四种Activity启动模式:standard、singleTop、singleTask及singleInstance,并阐述了它们在Task栈中的管理方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  • Activity以不同的模式加载,在栈中的存放方式是不一样的
  • Android中有4种Activity的加载模式
  • Android采用Task来管理Activity
  • Task以栈的形式管理Activity:先启动的Activity被存放在栈底,后启动的Activity被存放在栈顶
  • 启动一个应用时,Android就会创建一个Task

1.standard:标准模式

android:launchMode="standard"

默认加载模式,以这种模式加载,不会单独创建Task,会将新的Activity放在该应用原有的Task中,多次启动同一个Activity会有不同的Activity实例被放入Task中(这些实例的hashCode不同,但所在的Task ID是一样的)


2.singleTop模式

android:launchMode="singleTop"
  • 如果要启动的目标Activity处于Task栈顶,则直接使用该栈顶的目标Activity
  • 如果要启动的目标Activity不在栈顶,会重新创建一个目标Activity的实例并将其加载到Task栈顶(即使Task中存在该Activity实例,依然会创建,但是新的实例和原有实例的hashCode不同)

3.singleTask模式

android:launchMode="singleTask"

这种模式下的Activity在栈中只能有一个实例

  • Activity实例不存在:创建该Activity的实例,加入Task栈顶
  • Activity实例存在且位于栈顶:不做任何操作
  • Activity实例存在但不位于栈顶:将目标Activity之上的实例移除Task栈,使得目标Activity实例处于栈顶

4.singleInstance模式

android:launchMode="singleInstance"

该模式下的目标Activity实例总是位于栈顶且值包含该Activity实例

  • 目标Activity不存在:先创建一个Task,再创建Activity实例,存入该Task中

  • 目标Activity存在:将目标Activity之上的实例移除Task栈,使得目标Activity实例处于栈顶

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值