记一次android任务栈页面跳转问题

发布时间:2022-07-02 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了记一次android任务栈页面跳转问题脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

问题描述: 应用需求首次打开app,进入SplashActivity页面,如果支持一键登录功能, 直接跳转到闪验sdk(创蓝闪验集成三网运营商)一键登录页面,该sdk中页面只支持代码定制UI以及接口返回控制,有点坑。当进入一键登录页面,切换到app的账号密码登录页面,使用账号密码登录成功跳转到app首页之后,连续按2次返回键,finish掉当前主页,app回到桌面,这个时候如果从近期任务进入app,发现没有进入splash页面-判断token有效-静默成功登录到主页,而是直接进入了账号密码登录页面,匪夷所思,怀疑人生了,按照正常流程是返回键finish掉了栈里面的全部activity,下次近期任务进入也是从SplashActivity开始,静默登录到主页。。。

问题排查: SplashActivity—android:launchMode=“standard” PwdLoginActivity—android:launchMode=“singleTask” 闪验sdk一键登录 ShanYanOneKeyActivity— android:launchMode=“singleTask” MainActivity—android:launchMode=“singleTask”

SplashActivity、PwdLoginActivity、MainActivity是自己的app中的代码,没有设置任何的taskAffinity,默认都是在同一个任务栈中运行的,排查了ShanYanOneKeyActivity也配置的一样的taskAffinity,应该都是在一个task栈中,全部finish掉了,近期任务打开就应该的SplashActivity啊,这个是理论上的,实际还是需要验证,有没有更直观的方法呢?百度

adb shell dumpsys activity activities|findstr “app进程的名字”,运行后结果如下,可以直观的看到当前的activity属于哪个任务栈的

记一次android任务栈页面跳转问题

分析发现,首次启动应用 首次打开SplashActivity,查看当前的所属任务栈ID为 t49000,支持一键登录 自动跳转到一键登录页ShanYanOneKeyActivity,所属任务栈ID为 t49000(SplashActivity再执行 finish操作), 再次切换到 PwdLoginActivity账号密码登录页面,发现所属任务栈ID为 t49001 之后输入账号密码跳转到主页(PwdLoginActivity再finish),发现所属任务栈ID为 t49001 连续2次返回键,finish掉自己,退回到桌面了,再次近期任务进入,问题复现 进入PwdLoginActivity,发现所属任务栈ID为 t49001

也就是说,首次从ShanYanOneKeyActivity跳转到PwdLoginActivity切换了任务栈,导致 PwdLoginActivity、后面的登录成功页面都在 t49001 中运行,返回键退出了t49001栈中所有的界面,再次从近期任务进入,会打开该任务栈的入口,也就是PwdLoginActivity界面。

问题来了,为啥ShanYanOneKeyActivity跳转到PwdLoginActivity会创建新的任务栈,而不是t49000呢???

通过编写简易demo最终发现问题,

t49000栈中只有ShanYanOneKeyActivity,跳转到PwdLoginActivity,如果是先finish 自己 ShanYanOneKeyActivity,再跳转到 PwdLoginActivity,就会创建一个新的任务栈,如果是先跳转到PwdLoginActivity,再finish自己,就会共用一个任务栈ID为 t49000。至于具体原因,猜测是先finish自己,栈被回收了,这个时候打开PwdLoginActivity 不能复用t49000,所以创建新的,有待验证。

排查代码,发现再接入一键登录时候,复制demo的代码,默认true 先finish后跳转,导致出现这个问题。

记一次android任务栈页面跳转问题

改正为自己控制,打开的密码登录页,再关闭一键登录页面,会复用了上一个栈,问题解决。

记一次android任务栈页面跳转问题

总结 任务栈启动模式看似简单,内部原理很复杂,遇到问题再研究吧。。。

一些实用的命令 adb shell dumpsys activity activities|findstr com.example.myapplication

adb shell dumpsys activity activities|findstr mFocus

脚本宝典总结

以上是脚本宝典为你收集整理的记一次android任务栈页面跳转问题全部内容,希望文章能够帮你解决记一次android任务栈页面跳转问题所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: