Connor学Android - Activity启动模式

本文深入解析Android Activity的启动模式,包括standard、singleTop、singleTask和singleInstance,探讨taskAffinity属性的作用以及它们如何影响Activity实例管理和任务栈。理解这些模式有助于提升应用性能和用户体验。
摘要由CSDN通过智能技术生成

在这里插入图片描述

Learn && Live

虚度年华浮萍于世,勤学善思至死不渝

前言

Hey,欢迎阅读Connor学Android系列,这个系列记录了我的Android原理知识学习、复盘过程,欢迎各位大佬阅读斧正!原创不易,转载请注明出处:http://t.csdn.cn/stkuq,话不多说我们马上开始!

Activity启动模式

standard 标准模式

(1)每启动一次Activity就创建一个新实例

(2)谁启动的这个Activity,则该Activity就运行在其所在栈中

一个任务栈中可以有多个实例,一个Activity的多个实例也可以属于不同的任务栈

singleTop 栈顶复用模式

顾名思义,关注Activity是否位于栈顶

(1)若新Activity位于栈顶,不新建实例,无onCreate、onStart调用过程,仅调用onNewIntent方法取出当前请求的信息

(2)若新Activity不位于栈顶,新建实例

singleTask栈内复用模式

在这里插入图片描述
那么什么是Activity想要的任务栈呢?这里介绍Activity的taskAffinity(任务亲和性)属性

taskAffinity

Activity的属性,实际上就是为Activity分组,拥有相同taskAffinity的Activity为一组,进入同一个Activity栈,默认为应用包名。当然也可以自定义Activity的taskAffinity,不过不可与应用包名同名(这样做显然没有任何意义)。taskAffinity属性主要和singleTask启动模式或AllowTaskReparenting属性配合使用。

(1)taskAffinity + singleTask:如上所述,不再复述

(2)taskAffinity + allowTaskReparenting = “true”,这种情况也许可以将"reparenting"作为突破口,如果我们把Activity C的目标任务栈看作其生父母(C所在应用的包名),当前所在的栈看作其养父母,此时也许可以简单解释为:现有两个应用A和B,A启动了B的C,此时C在A的任务栈中,之后当B启动时,系统创建了B的任务栈,C会从A转移到B中。

singleInstance 单实例模式

拥有singleTas模式的特性,但该模式下的Activity只能单独位于一个任务栈中,若存在栈和实例均不会再新建

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ConnorYan

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值