图解活动的四种启动模式

9 篇文章 0 订阅
4 篇文章 0 订阅
  1. 四种启动模式:

1.standard
在栈管理中,每一次有新的活动启动就会对活动创建一个新的实例, 例如我在 aActivity 中在启动一次 aActivity , 栈内就会出现两个 aActivity, 而不是一个. 这时用户需要按2次返回键, 才会退出这个程序。
在这里插入图片描述

2.singleTOP
singleTop 和 standard 的区别在于, 当属于 singleTop 的 aActivity 在栈顶时, 启动 aActivity 就不会像 standard 那样创建一个新的 aActivity 的实例, 但 aActivity 不在栈顶时, singleTop 还是会创建一个新的 aActivity。
即singleTop 当 Activity 在栈顶时启动自己不会再创建一个新的实例,而 standard 是无论何时都会创建新的实例。
在这里插入图片描述

3.singleTask
singleTask 就是解决以上两个启动模式里面重复创建实例的启动模式, 他会在你启动 Activity 时在栈内进行查找, 如果栈内有即将要被启动的 Activity 时就会把这个 Activity 调到栈顶. 如果栈内没有这个 Activity 才会重新创建, 减少了重复创建 Activity实例。
在这里插入图片描述
4.singleinstance
该启动模式和之前的三个启动模式概念完全不一样, 只要是被设置过 singleinstance 的启动模式的 Activity会启动一个新的返回栈来管理这个活动。
例如有activityA,activityB,activityC这三个activity,将activityB设置为SingleInstance模式。
1.当A开启B,B开启C,如果finish activityC,那么会显示activityA而不是activityB,这是因为activityB和activityA、activityC所处的栈不同,A,C处于同一个返回栈,而B处于一个新的返回栈中。当C关闭了,就会显示C所处栈的下一个activity即A。A再关闭后任务栈清空,销毁,这时候会找到新的任务栈返回B(即返回时显示顺序为:C——>A——>B)
在这里插入图片描述

2.当A开启B,然后返回桌面,再从桌面点开应用,显示的是A,这是因为launch启动应用的时候 会从默认的栈找到栈顶的activity显示,singleinstance模式开启的栈是辅助栈。
在这里插入图片描述

3.当A开启C,C开启B后,此时B开启A,结果显示的是C,这还是两个栈造成的,B开启A的时候,其实是到达A所处的栈,栈顶是C,所以显示C。
在这里插入图片描述

2.四种启动模式的应用场景:
1.standard:
需要每次创建一个新的实例的活动使用standard模式。例如新建邮件,新建文档之类的场景,每创建一次都是新建一个单独的实例。
2.singleTop:
需要在当前activity中多次创建同类型activity的活动使用singleTop模式。例如登录页面、推送通知栏等。
3.singleTask:
需要保持整个栈内单一实例的活动使用singleTask模式。例如程序模块逻辑入口:主页面、WebView页面、扫一扫页面、电商中:购物界面,确认订单界面,付款界面等。
4.singleinstance:
需要实现界面分离逻辑的活动使用singleinstance模式。锁屏界面、来电显示,应用检查手势密码界面等。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

进击的code

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

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

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

打赏作者

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

抵扣说明:

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

余额充值