Activity四种启动模式

Activity四种启动模式

四种启动模式分别是:
standard(默认的启动模式)
singleTop
singleTask
singleInstance

使用恰当的activity的启动模式可以避免创建大量的activity页面, 造成资源的浪费
设置activity:只需要设置清单文件标签Android:launchMode属性就能设置启动模式
<activity
android:name=".MainActivity"
android:launchMode="standard" />

1. standard启动模式:

每当启动一次Activity就会创建一个新的Activity

Activity默认的启动模式, 它的效果就是每次启动Activity都会创建一个新的实例。比如:
在Activity_1中有一个btn1是跳转到Activity_2, Activity_2中有一个btn2点击会跳转到Activity_1。 我们点击btn1会跳转到Activity_2, 这时我们点击Activity_2中的btn2会新建一个Activity_1跳转过去。当我们点击back键时会按照栈的顺序逐步返回。
当然还有一个更经典的表示方法就是:我们在Activity_1中添加一个Button, 这个Button的作用是跳转到Activity_1。那么点击它有什么作用呢?当我们点击Button时, 会新建一个Activity_1,每点击一次会新建一个新的Activity_1, 然后按back会按照栈的顺序返回。

2. singleTop启动模式:

启动Activity时会检测栈顶的Activity是否是所启动的Activity如果是则直接跳转, 不是则新建。

我们在Activity_1中添加两个Button, 这个btn1的作用是跳转到Activity_1, btn2作用是跳转到Activity_2。我们点击btn1并不会新建Activity_1, 因为Activity_1在栈顶, 直接跳转过去即可。但如果点击btn2, 则会新建一个Activity_2。

3. singleTask启动模式:

如果在栈中检测到要启动的Activity, 则把在该Activity之上的Activity全部出栈, 使请求启动的Activity位于栈顶

比如:有三个Activity, 分别是A1、A2、A3。A2的启动模式为singkeTask。当我们按照顺序(A1->A2->A3)启动完成后想再启动A2, 这时会将A3销毁, 使A2位于栈顶完成启动。

4.singleInstance启动模式:

比如应用1已经启动Activity_1, 这时应用2也需要启动Activity_1, 则不需要新建, 两个应用共享一个Activity_1。

用singleInstance启动的Activity实例单独占有一个栈, 不允许有其他实例存在。
比如有三个Activity可以互相启动, A2的启动模式为singleInstance, 当启动A1时的栈为100,则启动A2时会新建一个栈比如为101, 启动A3, 这是发现A3的栈为100, 也就是说A3被压到和A1相同的栈中。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值