Android:史上最生动形象的解析andriod activity的四种启动模式(standard, singletop,singletask,singleinstance)

作者:GentlemanTsao
https://blog.csdn.net/GentelmanTsao

套用连连看规则

玩过连连看吗?回顾下连连看的规则:
将相同花色的两个方块用三根以内的直线连在一起就可以消除。

为了有效管理activity,google在玩过连连看后,把该规则适当改进也套用到activity上了。下面我们就来具体试玩一下吧。

Activity的四种启动模式

模式一:standard

规则:叠放,不消除
在这里插入图片描述
速记成语:后来居上。

模式二:singletop

规则:叠放,相邻相同则消除,但保留并刷新下面的一个。
在这里插入图片描述
该规则下,你无法拼出“笔笔”,“果果”。
却可以拼出:“pen-pineapple-apple-pen”

应用举例:浏览器(Browser)的书签Activity(BrowserBookmarkPage)
配置成singleTop的Activity,不再会构造新的实例加入到Task栈中,而是将新来的Intent发送到栈顶Activity中,栈顶的Activity可以通过重载onNewIntent来处理新的Intent(对应图例中的刷新动作)

速记成语:形单影只

模式三:singletask

规则:叠放,任意间隔出现相同则消除区间内所有,但保留并刷新最下面的一个。
在这里插入图片描述
该模式你无法拼出“pen-pineapple-apple-pen”!

标志为singleTask的Activity,最多仅有一个实例存在,并且,位于以它为根的Task中。所有对该Activity的请求,都会跳到该Activity的Task中展开进行。

适用范围:构造成本很大,但切换成本较小的Activity
举例:浏览器应用的主Activity(名为Browser…)

速记成语:举世无双

模式四:singleinstance

规则:横放,不叠加,不重复
在这里插入图片描述
速记成语:各行其是

你还需要知道这些

1.“相同”的含义与taskAffinity属性

所谓“相同”,不仅指activity的名字相同,还包括它的taskAffinity属性。
Note:每个Activity都有taskAffinity属性,这个属性指出了它希望进入的Task。如果一个Activity没有显式的指明该 Activity的taskAffinity,那么它的这个属性就等于Application指明的taskAffinity,如果 Application也没有指明,那么该taskAffinity的值就等于包名。

2.“消除”的含义

所谓“消除”,本质上是出栈的动作。
配置成singleTop的Activity,不再会构造新的实例加入到Task栈中,而是将新来的Intent发送到栈顶Activity中,栈顶的Activity可以通过重载onNewIntent来处理新的Intent

3. 注意:栈顶的重复activity并没有创建出来。而图例中为了形象的表达,将重复的activity表现出来了。

本文为原创文章。别忘了点赞哦。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

GentlemanTsao

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值