项目场景:
提示:这里简述项目相关背景:
项目场景:最近项目测试过程中发现一个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栈,自己管理,这样就万无一失了。
可惜我这边项目已经没有那么多时间给我了。。。。只能各种添加变量用蹩脚的方式去避免上述问题的发生了。。这里记录一下

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

被折叠的 条评论
为什么被折叠?



