Android之Activity(四):活动的启动模式

launchMode在多个Activity跳转的过程中扮演着重要的角色,它可以决定是否生成新的Activity实例,是否重用已存在的Activity实例,是否和其他Activity实例公用一个Task里。
Task是一个具有栈结构的对象,一个Task可以管理多个Activity,启动一个应用,也就创建一个与之对应的Task。
Activity一共有以下四种launchMode:
1.standard
2.singleTop
3.singleTask
4.singleInstance
在AndroidManifest.xml中配置Activity时的Android:launchMode属性就是启动模式。
standard
standard模式是默认的启动模式。
这里写图片描述
如图所示,不管有没有已存在的实例,都生成新的实例。
singleTop
这里写图片描述
如图所示,先判断栈顶有没有已存在的实例,如果有就直接用,如果没有就生成新的实例。
singleTask
这里写图片描述
如图所示,先判断栈里面有没有已存在的实例,如果有就直接用并将其上的所有活动出栈从而使其位于栈顶,如果没有就生成新的实例。
singleInstance
这里写图片描述
如图所示,不同于以上三种启动模式,指定为singleInstance模式的活动会启用一个新的返回栈来管理这个活动(其实如果 singleTask模式指定了不同的 taskAffinity,也会启动一个新的返回栈)。
那么这样做有什么意义呢?想象以下场景,假设我们的程序中有一个活动是允许其他程序调用的,如果我们想实现其他程序和我们的程序可以共享这个活动的实例,应该如何实现呢?使用前面三种启动模式肯定是做不到的,因为每个应用程序都会有自己的返回栈,同一个活动在不同的返回栈中入栈时必然是创建了新的实例。而使用singleInstance模式就可以解决这个问题,在这种模式下会有一个单独的返回栈来管理这个活动,不管是哪个应用程序来访问这个活动,都共用的同一个返回栈,也就解决了共享活动实例的问题。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值