在查看“任务和后退堆栈”指南的“定义启动模式”部分后,我完全不了解使用“singleTask”声明的活动的行为。
假设我在后台任务的底部(根活动)中存在该活动的实例时启动singleTask活动(通过startActivity方法),
正如文章所描述的那样,我用来启动singleTask-activity的Intent将被传递给实例,在这种情况下,实例是否将自己置于其任务之上并将其任务置于前台,或者只是将其任务带到前台没有把自己置于其任务之上的前景?
我能说清楚吗?请帮忙!提前谢谢
答案 0 :(得分:7)
我实际上有同样的问题。 在阅读了有关stackoverflow的回复并做了一些实验后,我相信当已经在后台任务中启动当一个单一任务活动时,系统将全部杀死堆栈顶部的其他活动并恢复singleTask活动。
当然,这不是我从文档中得到的。
这是我的理论:
启动模式:活动A:singleTask,活动B:标准
实验1
实验2
在我的情况下,我不得不使用android:alwaysRetainTaskState="true"
,虽然这并不理想,因为我希望在10分钟之后清除堆栈,因为这个建议是有道理的:
来自Tasks and Back Stack指南的如果用户离开任务很长时间 时间,系统清除任务 除root之外的所有活动 活动。当用户返回时 再次执行任务,只有root活动 恢复。系统就是这样的, 因为,经过长期的 时间,用户可能已经放弃了什么 他们以前做的都是 回到任务开始 新事物。
。
我希望这有助于其他人。
答案 1 :(得分:0)
如果Activity
已存在,则会为Activity
致电onNewIntent()
。由于在收到新Activity
之前始终会暂停Intent
,因此会在收到onResume()
后不久调用onNewIntent()
。事件onResume()
被调用意味着Activity
将出现在前台并且对用户可见。
答案 2 :(得分:0)
那么FLAG_ACTIVITY_CLEAR_TOP与单一任务有何不同?
唯一的区别是FLAG_ACTIVITY_CLEAR_TOP是单个任务的子集,它只能以相同的方式工作,但前提是被调用的活动是当前任务的一部分吗?