安卓笔记—LaunchMode

LaunchMode处理的是: Task(实例),Activity类,Activity实例三者之间的对应关系
所谓的对应关系就是:1对1,1对多,多对1,多对多.
而TaskAffinity处理的是:启动一个应用时要选择哪个Task存放.此文只讲对应关系.

注意:一个Activity实例不会对应多个Activity类,一个Activity实例不会对应多个Task实例.唯一可以存在多对多关系的是Task实例与Activity类.

下面从对应关系的角度分别对四个LaunchMode进行解释(最新版本安卓是五个LaunchMode)

LAUNCH_MULTIPLE(standard)

ActivityA的LaunchMode是standard

对应关系解释
Activity类 对 Activity实例1对多当第二次启动ActivityA时,不会重用第一次新建的ActivityA实例,而是会新建一个ActivityA的实例
Task实例 对 Activity实例1对多ActivityA实例所在的Task可以有多个Activity实例
Task实例 对 Activity类多对多ActivityA实例所在的Task可以有多个Activity类的实例,ActivityA类也可以在多个Task中存放不同的实例

LAUNCH_SINGLE_TOP (singleTop)

ActivityA的LaunchMode是singleTop
如果启动ActivityA时已经有一个ActivityA实例在当前Task的顶部了,会重用Task栈顶的ActivityA实例,并且回调这个实例的onNewIntent的方法,不会新建一个ActivityA的实例.对应关系与LAUNCH_MULTIPLE相同.

LAUNCH_SINGLE_TASK

ActivityA的LaunchMode是singleTask

对应关系解释
Activity类 对 Activity实例1对1ActivityA只能有一个ActivityA实例,当第二次启动ActivityA时,会重用第一次新建的ActivityA实例,并且回调这个实例的onNewIntent的方法
Task实例 对 Activity实例1对多ActivityA实例所在的Task可以有多个Activity实例,但只能有一个ActivityA实例
Task实例 对 Activity类1对多ActivityA实例所在的Task可以有多个Activity类的实例,但ActivityA类只能在一个Task中存放实例

LAUNCH_SINGLE_INSTANCE

ActivityA的LaunchMode是singleInstance

对应关系解释
Activity类 对 Activity实例1对1ActivityA只能有一个ActivityA实例,当第二次启动ActivityA时,会重用第一次新建的ActivityA实例,并且回调这个实例的onNewIntent的方法
Task实例 对 Activity实例1对1ActivityA实例所在的Task只能有一个ActivityA实例,不能有其他Activity实例
Task实例 对 Activity类1对1ActivityA实例所在的Task只能有ActivityA类的实例,ActivityA类只能在一个Task中存放实例
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值