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推出栈 这样就会置空 也就是会显示桌面了 
<-----------------------------------------------------------------------------------------------------------------------
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值