android开发艺术探索之activity的任务栈小笔记

activity 任务栈 分为前台任务栈和后台任务栈。后台任务栈中的activity处于暂停状态。
TaskAffinity任务相关性该参数表示了一个activity 所需俄任务栈的名字默认情况下activity所需要的栈的名字均为包名
当然我们也可以为每个activity的所需任务栈单独制定TaskAffinity属性


TaskAffinity主要和singleTask或allowTaskReparenting结合使用
当TaskAffinity和singleTask启动模式配对使用的时候 它是具有该模式的activity目前任务栈的名子,待启动的activityTaskAffinity会运行在名字和相同的任务栈中

TaskAffinity当和allowTaskReoarenting结合使用时候,若allowTaskReoarenting为true时
会出现如下状况
首先有两个app应用 A和B
当应用A启动了B应用中的某个ActivityC,然后再按home键回到桌面找到应用B点击运行会导致之前调用的activityC回到栈顶显示出来

---------------------------------------------举例---------------------------------------------------------------------->
有mainActivity A 启动模式默认 taskAffinity未指定
activityB        启动模式为singleTask  taskAffinity为task1
activityC        启动模式为singleTask  taskAffinity为task1


操作启动app A会先显示然后再A中启动B B中启动C C中在去启动A 然后再启动B 问点击back键时会显示哪个activity 在点击back键呢?


分析 启动app时 A会创建事例推到为包名的栈中


A启动B时 B事例会创建推到名字为task1的栈中(task1栈会被创建)
B启动C时 C事例会被创建并且推到已经创建好的task1中
C启动A时 A事例会被创建推到所请求得栈中也就是task1


此时为包名的栈中 A
栈是task1 中 ACB  A在栈顶。


A又启动B 因为B为singletask 故会将在task1中的B置顶,为了将其置顶 会把在B之上的CA 都推出栈。
故此时按返回键task1栈会为空 后台任务的栈即为包名的栈会变为前台任务栈 显示A 
如果在按返回键 会把为包名的栈中的A推出栈 这样就会置空 也就是会显示桌面了 
<-----------------------------------------------------------------------------------------------------------------------
阅读更多
版权声明:一起学习,一起进步 https://blog.csdn.net/qq_15623599/article/details/80351751
个人分类: Android
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭