天啦撸,Activity启动模式的天坑!

在项目测试中遇到一个bug,当session过期跳转到登录页后,从登录页返回会出现另一个登录页。问题源于启动模式设置不当和可能的时序问题。尽管singleTop或singleTask模式可以尝试,但它们不会调用onNewIntent。由于时间紧迫,作者选择了使用变量和临时解决方案来避免问题,建议长期解决方案是自定义activity栈以更好地管理页面。

项目场景:

提示:这里简述项目相关背景:

项目场景:最近项目测试过程中发现一个bug,是session失效回到登录页的这样一个场景,再正常不过的一个业务场景了。。还能有bug。


问题描述

三级页面出现session问题时会发送eventBus通知给baseAct,baseAct接收后跳转到login。这时如果从login页面点击返回,发现下面还有一个新的login。发现问题呢,是在登录成功的首页再次退出(这里应该是退出应用回到桌面了,结果退到了登录页去了。)
大致模拟一下场景代码可以简单理解为:

startActivity(new Intent( packageContext: MainActivity.this,LoginActivity.class));
startActivity(new Intent( packageContext: MainActivity.this,LoginActivity.class));
finish();

上述startActivity方法只是同时在不同的地方进行调用)

原因分析:

启动模式?

到这里正常情况下,都会认为是不是只要给loginact设置一个启动模式就好了,singleTop或者singleTask都可以。
—————————————————————————————————————————————但是!!!!!!!!不是这样的,这两种启动模式都存在一个问题,就是不会调用onnewintent。另外Top模式还有另外一个严重问题(上述的)
简直没想到启动模式为啥还会存在这种问题。。。
但是仔细想想,可能是在act启动流程里面存在一个时序的问题,我理解为普通单例模式存在的那种问题。


解决方案:

如果项目不着急,时间充足。还是建议各位同学自己建立一个activity栈,自己管理,这样就万无一失了。

可惜我这边项目已经没有那么多时间给我了。。。。只能各种添加变量用蹩脚的方式去避免上述问题的发生了。。这里记录一下

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值