深入浅出安卓启动模式和返回栈

建议先行阅读:

Android 面试黑洞——当我按下 Home 键再切回来,会发生什么?

了解任务和返回栈


一、任务和返回栈

1.概览

在这里插入图片描述
任务(Task)是Activity的合集,按应用分为不同的任务,点击应用列表是以任务为单位显示。

回退栈(Back Stack)是Activity的合集,也是任务的合集,表示了Activity的排序顺序,当用户按下返回时应该以什么顺序显示Activity。

二、启动模式

1.standard

采用栈的存储结构,先进后出(FILO)。

提示:每一层都是Activity,不同颜色表示不同的应用。

2.singleTop

只有当栈顶和新加入的Activity相同时,才会复用,调用onNewIntent(Intent intent)。

3.singleTask

当栈中有相同的Activity时,会把该Activity推到栈顶进行复用,清空其上方,调用onNewIntent()。

如上图,复用Activity2,把它推到栈顶,推出了Activity3。

当调用其他Application的Activity时,如果其他Application的回退栈中存在该Activity,会把整个回退栈压到当前的回退栈之上,动画也是跨应用的动画。

如果此时点击应用列表,他们会回到各自的应用。

4.singleInstance

独立一个Task出来专门用来复用,该Task不会显示在任务列表中。

此图表示了从Activity1创建到Acitity4的过程。只用Activity3是singleInstance。

此图描述了上述过程,并且从Activity4按下返回键是直接返回到Activity2,从Activity3按下返回也是Activity2。注意Activity3进场和退场的动画。

上述动作描述了当另外一个TestApplication调用MyApplication的Activity3时,MyApplication的Task压在了Activity3的独立Task之上,再下面是TestApplicaition的Task。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值