Android DevArt3:SingleTask启动模式探究:首先从MainActivity启动案例入口AActivity,并在A中启动BActivity,从B启动CActivity, 再从C中又启动AActivity, 最后在A中启动B,现在按两次back键,然后回到的是哪个Activity? 答案是,回到MainActivity。
SingleTask启动模式探究
GitHub
如题:首先从MainActivity启动案例入口AActivity,并在A中启动BActivity,从B启动CActivity,
再从C中又启动AActivity, 最后在A中启动B,现在按两次back键,然后回到的是哪个Activity?
简单点:Main->A->B->C->A->B->double back->which activity?(MainActivity).
答案是,回到MainActivity。
启动流程:
上图对应的AndroidMenifest.xml配置:
<!--Android启动模式之SingTask探究--> <activity android:name=".Chapter1.launchmode.ALActivity" android:launchMode="standard" /> <activity android:name=".Chapter1.launchmode.BLActivity" android:launchMode="singleTask" android:taskAffinity="com.art.singletask1" /> <activity android:name=".Chapter1.launchmode.CLActivity" android:launchMode="singleTask" android:taskAffinity="com.art.singletask1"></activity>
入栈模型:
全文重点!!!
从C跳转到A,因为A是standard,系统会为A创建一个新的实例并将A添加到启动它的那个Activity(即C)所在的任务栈中:
通过上图可知,此时com.art.singletask1栈中的有三个实例:BCA。
此时,从A启动B,由于B的launchMode为singleTask(栈内复用模式),工作模式为“后进先出”,B要回到栈顶的话,只能是AC出栈。
到这里就好理解了,back第一下,退出处于上层的B,第二次,退出左边的A,显示MainActivity。分析到这里,可以得出结论,singleTask模式的Activity切换到栈顶时,会导致它上面的栈内的所有Activity出栈。
GitHub
本文作者:风之旅人
本文链接:https://www.cnblogs.com/jooy/p/8687192.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 深入理解 Mybatis 分库分表执行原理
· 如何打造一个高并发系统?
· .NET Core GC压缩(compact_phase)底层原理浅谈
· 现代计算机视觉入门之:什么是图片特征编码
· .NET 9 new features-C#13新的锁类型和语义
· 手把手教你在本地部署DeepSeek R1,搭建web-ui ,建议收藏!
· Spring AI + Ollama 实现 deepseek-r1 的API服务和调用
· 《HelloGitHub》第 106 期
· 数据库服务器 SQL Server 版本升级公告
· C#/.NET/.NET Core技术前沿周刊 | 第 23 期(2025年1.20-1.26)