android的启动模式(精简篇1)你真的知道吗

声明,本文主要介绍launchMode,其他的属性都是默认值的情况。避免干扰。


关于activity首先要认清一点,在没有模式,权限等一切的限制条件下。对于task来说 所有应用程序的activity之间都是平等的(这是主要的)
全文用A代表当前Activity,其他Activity为O
standard 
这种是默认的模式,也是最简单的,就是手机上所有是standard模式的activity之间调用都会遵守如下顺序,
新建A对象--->将此对象放入task顶部—>显示当前A
这种模式的列子, 比如写邮件的A(只是写不是浏览收件箱或什么的),希望对每一个调用他的task都需要新建一个A。
singleTop 
其实这种模式是最不好理解的(需要看启动者的模式), 官方文档总结一句换就是自己启动自己的singleTop时不会重建,只是执行一下onNewIntent和onResume。这种模式有两点需要理解的
(1)存在栈顶的A。自己调用自己。


(2)存在栈顶的A。在O中调用A,O的模式为singleInstance(为什么会这样以后task管理文章会介绍)。
所以此模式只在同一个task上调用起作用,task之间不可以(除非O是singleInstance)。
这种模式的列子, 比如searchactivity,在search页面搜索,结果显示在当前页面。整体一段逻辑就可以了。




singleTask
从字面意思理解是只能在一个task中存在的意思。有两种情况,
1,存在A,就去找到存在A的task,切换到当前task,将之上的所有O出栈,显示A。 这种模式在有两种情况。
2,不存在A,新建A,并根据taskAffinity判断是否新建task,如果相同则不新建task,只将A入当前task,反之
新建task(关于taskAffinity就是相似性,以后有机会详解)
这种模式的列子, 比如邮箱的index页面,此页就像是单独模块的首页一样,




singleInstance
这种模式非常简单,就是当前系统中只有一个A,并且task中只有A,没有其他activity。
这种模式与singleTask非常相似,唯一不同是A所在task中不能包含其他activity。




总结,模式主要控制两种功能1,新建不新建 。2,入不入当前栈。
1,新建不新建由当前activity模式决定
2,如不入当前栈由启动他的activity和当前activity共同决定
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值