Android Activity的任务栈 & 四种加载模式

#.首先,四种加载模式的简单概括:
1.Standard(标准模式):每次加载,都会重新创建一个目标Activity实例,并放在栈顶。
2.SingleTop(单顶模式):
        若栈顶已经存在目标Activity实例,则复用;否则,创建新的实例,放在栈顶。
3.SingleTask(单栈模式):
        若任务栈中已存在目标Activity实例,则清空其上面的Activity,复用该Activity实例;否则,创建新的实例,放在栈顶。
4.SingleInstance(单例模式):整个系统中只存在一个目标Activity实例,它独自占一个任务栈。
        加载时,若目标Activity实例已存在,则复用该Activity实例;否则,创建新的任务栈,创建新的目标实例放在该任务栈中。 

##1.任务栈介绍

    在Android中,任何Activity都被放在某一个任务栈中,Android通过任务栈来管理Activity的启动和关闭次序。例如:在关闭当前Activity后,系统可以根据任务栈中的记录来显示前一个Activity;通过启动模式和任务栈,可以判断是复用旧的Activity实例还是创建新的实例。

    同一个任务栈中可以包含不同APP的Activity,任务栈更像是从用户使用角度来组织管理Activity的一种方式,从用户角度来看,他按顺序打开一堆APP的页面,这些页面互相跳转,他点back键返回,就回到上一个页面,用户并不关心这些页面在底层到底属于哪些APP。

    虽然同一个任务栈中可以包含不同APP的Activity,但是这些Activity仍然运行在各自APP对应的进程中。Activity运行在哪个进程是一个维度,任务栈是另一个维度,任务栈主要针对的是这些Activity的使用流程顺序。 

    用户最初是从桌面(启动器页面)开始,点击启动某个应用,启动了其对应任务栈,然后各种启动、关闭、切换操作,实质上对应的是各种任务栈以及其中Activity的创建、销毁和切换。点击Home键时,切换到桌面,当前Activity切换到后台,并未被销毁。

    从桌面打开一个应用时,会开启新的任务栈,默认与当前包名相同,把APP首个打开的Activity放入其中。

    当从一个App使用Standard或SingleTop模式调用另一个APP的Activity时,并不会新建任务栈,而是会把Activity放入当前任务栈。

    每当点击“Home”键时,就会切换到桌面Activity(启动器launcher Activity),这是系统提供的一个Activity,它独立占据着一个任务栈,效果比较像像单例模式。每次从桌面启动App都会打开新的任务栈,每次点击Home键都会跳转回桌面Activity,而原来的前台任务栈切换到后台。

##2.在Activity

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值