Activity四大启动模式

本文详细介绍了Android中Activity的四种启动模式:standard、singleTop、singleTask和singleInstance。通过模拟场景的方式,深入浅出地解释了每种模式的工作原理及其应用场景。

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

这篇文章主要介绍的是Android-Activity的四大启动模式:

 standard、singleTop、singleTask、singleInstance 

先来看看这四种模式的思维导图:



下文以模拟场景:在MainActivity中启动SecondActivity作讲解。

1.Standard(默认模式)

这个模式是系统的默认模式,也称为标准模式,如果没有指定的启动模式,那么都会使用这个标准模式。这个模式的特点是:在当前的Activity(MainActivity)中启动第二个Activity(SecondActivity),SecondActivity会归属到MainActivity的任务栈中(无论你是否指定了TaskAffinity,且无论该任务栈是否已存在SecondActivity实例,系统都会创建新的Activity实例。

2.SingleTop (栈顶复用模式)

首先需要明白的是:该启动模式仍然不会启动新的任务栈,无论你是否指定了TaskAffinity属性。

明白了这一点,接着请往下看

这个模式主要有三种情况:

若该任务栈中不存在SecondActivity实例,那么会创建新的SecondActivity实例。

若该任务栈中存在SecondActivity实例,但不位于栈顶,则会创建新的SecondActivity实例。

若该任务栈中存在SecondActivity实例,且位于栈顶,则会复用该实例。

3.SingleTask (栈内复用模式)

这种启动模式能够指定创建SecondActivity的任务栈,即利用TaskAffinity属性指定任务栈(任务栈不存在时,创建新的任务栈),若不指定,则默认为MainActivity的任务栈。

接下来,会判断任务栈中是否已存在SecondActivity实例:

若不存在,则创建新的SecondActivity实例。

若已存在,则会使该SecondActivity实例以上的其他Activity统统出栈,来让自身实例位于栈顶,并复用该实例。


4.SingleInstance(全局唯一模式)

这种启动模式也称全局单例模式,顾名思义,及整个系统中仅存在该Activity的一个实例。

在启动SecondActivity时,

若系统中没有存在SecondActivity实例,则创建一个SecondActivity实例并独占一个任务栈,后续再启动该Activity时,都会复用这个全局唯一实例,除非该任务栈被销毁。

若启动时,发现系统已存在一个SecondActivity时,都会复用这个全局唯一实例


这里做过一个小测试:即将MainActivity和SecondActivity都指定同一个任务栈,在OnCreate()方法中打印它们的TaskId,

发现系统会自动的为SecondActivity准备新的任务栈,并不会让它们共处一个任务栈。


后面会持续的添加相关代码上来。


如有错误,欢迎能够指出,十分感谢!





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值