解决应用热启动能显示之前activity的问题

问题:

定义activity  A,B

比如应用打开之后先显示A  ,通过某个按钮 打开B ,这时候按home键。再从桌面打开应用,我希望看到B 。

解决方法:

1.在manifest中A的 launchMode删掉。

2.在A的oncreate中加入如下逻辑。

if (intent.flags and Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT != 0) {
            finish()
            return
        }

这么做的原因:

1.一般人喜欢把A的launchMode定义为singleTask。这样可以避免应用重复创建activity。但是有一个弊端就是,当这个A上面显示了别的activity,比如B。如果此时你从桌面打开应用,app会删除A上面所有的activity。导致B被删掉。所以我们不能定义A的launchMode为SingleTask。

2.那我们证明避免重复创建A的实例呢,可以看上面的步骤2。  当这个intent是应用从后台唤起,显示在前台的时候,则说明此次行为为热启动。我们就把这次的activity   finish掉,这样就不会有activity覆盖在B上面了。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值