singleTop启动模式真的可以防止多次打开栈顶的Activity么?

转自:https://blog.csdn.net/qq_26287435/article/details/99719794
综合以上的结果,我们可以得出结论,singleTop启动模式确实解决了栈顶Activity重复打开的问题,在多次点击的情况下,栈顶Activity只打开了一次。

singleTop真的能完全防止多次打开栈顶的Activity么?

虽然我们的bug完美解决了,但作为程序员,我们还是需要杠精下的。

这里我改下点击事件的代码,瞬间多次调用启动activity的代码,代码如下:

@OnClick(R.id.btn_test6)
public void onBtnTest6Clicked() {
    for (int i = 0; i < 5; i++) {
        startActivity(new Intent(this, 
        LaunchModeSingleTopTestActivity.class));
    }
}

可以看到,我们的LaunchModeSingleTopTestActivity确实打开了五次。

其实这也很好理解,不管任何操作都是需要时间去执行的,我们的activity的启动过程也是。

即使我们给Activity设置了启动模式,他们也不是立刻生效的,也需要执行到对应的代码逻辑后才会生效。

所以如果我在for循环里面瞬间执行多次打开Activity的操作,那么启动模式生效的代码还未执行到,所以启动模式就不会生效。


转自:
https://blog.csdn.net/u013270444/article/details/80233205
因为启动的太快,导致系统判断有错误吧。

当然,也可以自己做一个计数,启动多次的话,就return,也可以把启动模式在代码里面改为sigletask

Intent intent = new Intent(ActivityBase.this, AppActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP|Intent.FLAG_ACTIVITY_SINGLE_TOP);
startActivity(intent);

这样就保证了,只会有一个。

自己测试时发现,虽然栈顶确实只有一个活动,但是每次启动一次都会调用
onpause()和onresume()
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值