全面解析Activity的4种启动模式说到Android的启动模式,首先来看一个实际的业务场景
我之前在公司实习的时候,我所在的部门只负责一个品类(国际机票),那用户从机票首页开始搜索机票到最终完成订单并支付大致分为以下几个流程(实际流程因为考虑的问题比较多,所以要比这稍微复杂些):1
用户在机票首页确认好出发、到达目的地、日期及人数后,就可以点击“搜索”进入到搜索结果页2
用户根据意愿选择相应航班并点击进入确认订单页3
用户确认好订单内容点击下单,开始支付,支付完成跳支付完成页4
用户可以选择回到首页,或者去公共订单系统查看订单详情(这属于公共部分,不在我们讨论的范围内了)经过上面4个步骤整个购票流程就算结束了
但是,这里有个问题,就是用户从首页到最后的支付完成页之间经历了这么多的Activity,那用户完成了支付后想回到首页是不是要一层一层的往回退才行
如果是这样的话,那就太不人性化了,那怎样才能在完成支付后一键回到首页呢
有人可能会说,那就直接从支付完成页跳转到首页不就可以了吗
这样当然是可以的,但是这样做那之前打开的那么多Activity怎么办呢
难道就让它们待在Activity任务栈中吗
这样岂不是太浪费内存了
请看我画的示意图:如上图所示,如果我们在支付完成之后启动首页Activity那页面1-页面5之间的所有Activity对用户来说都是无用的,并且占用的内存,极大地浪费这本来可能就很紧张的Android内存资源
那有没有一些优雅的方式来解决这个问题呢
我们可以想象一下,有没有可能在从页面4跳转首页的时候把原来处于首页之上的所有Activity全部干掉呢
这样不就刚好解决了我们刚刚所说浪费资源的问题了吗
就像下图一样:很显然,无论从用户体验的角度还是从内存优化的角度来看第二种方式都是最为优雅的
那怎么实现这种需求呢
有人可能会说,可以将任务栈中页面1之上的所有