在查阅了“任务和后堆栈”指南中的“定义启动模式”部分之后,我不太清楚用“singletask”声明的活动的行为。
假设在后台任务的底部(根活动)有一个活动实例时,我启动一个单任务活动(通过startActivity方法)。
正如本文所描述的,我用来启动singletask活动的意图将被传递给实例,在这种情况下,实例是将自身置于其任务的顶部,将其任务置于前台,还是只将其任务置于前台,而不将自身置于其任务的顶部?
我说清楚了吗?请帮忙!提前谢谢

最佳答案

实际上我也有同样的问题。
在阅读了stackoverflow上的回复并做了一些实验之后,我相信当一个单任务活动在后台任务中启动时,系统将杀死堆栈顶部的所有其他活动并恢复单任务活动。
当然,这不是我从文档中得到的。
我的理论是:
启动模式:活动A:单任务,活动B:标准
实验1
启动;堆栈:[a]
从A启动B;堆栈:[A B]
按主页;堆栈:[a b]
从启动程序启动a;堆栈:[a](ondestroy在b上调用
上的onResume()之前
实验2
启动;堆栈:[a]
从A启动B;堆栈:[A B]
从b启动a;堆栈:[a](ondestroy在b上调用
上的onResume()之后)
在我的例子中,我不得不使用android:alwaysRetainTaskState="true",尽管这并不理想,因为我确实希望在10分钟后清除堆栈,比如说,因为这个建议是有意义的:
如果用户长时间离开任务
时间,系统清除
除根以外的所有活动
活动。当用户返回到
再次执行任务,只有根活动是
恢复。系统是这样运作的,
因为,在
时间,用户可能已经放弃了
他们以前做过而且现在
返回任务开始
新的东西。
Tasks and Back Stack指南。
我希望这能帮助其他人。

09-13 05:19