阅读Android documentation以及这里的一些答案使得clearTaskOnLaunch应该如何工作变得模棱两可。具体地
1)如何识别根活动?它只是具有DEFAULT,LAUNCHER或MAIN意图过滤器的那个吗?
2)从文档中的“主屏幕”启动意味着操作系统主屏幕或应用程序列表,对吗?即来自不在申请中。
3)每当从主屏幕启动该活动时,clearTaskOnLaunch是否清除活动堆栈,或者只是从主屏幕启动该活动的进程时?因为文档表明前者,但这里的帖子表明后者。我想这取决于“发射”的定义是什么。
编辑: 4)“清除”活动堆栈是否意味着从字面上删除它,或让活动循环通过onCreate()和finish()?
我以各种可想象的方式操纵clearTaskOnLaunch,绝对没有效果。我已将它放在清单中的根活动中,然后将其放在每个活动中以确保,完全终止进程后重新启动我的应用程序,等等。我的活动堆栈根本没有被清除。
任何人都可以提供有关如何实施clearTaskOnLaunch的完整概述吗?
答案 0 :(得分:6)
以下是Android工程师对群组的完整回复:http://groups.google.com/group/android-developers/browse_thread/thread/da024bcaf4e1960f
在这里阅读Android文档和一些答案(以及 StackOverflow)使clearTaskOnLaunch如何变得模棱两可 应该表现得特别:
1)“清除”活动堆栈是否意味着从字面上删除它,或者 让活动循环通过onCreate()和finish()?
清除堆栈中的所有活动都将通过 生命周期好像他们调用了finish()。根活动将 通常保持原样。
2)如何识别根活动?是 它只是一个与 DEFAULT,LAUNCHER或MAIN意图过滤器?
这基本上是堆栈中的第一个活动。意图是 Intent用于启动堆栈。
3)从文档中的“主屏幕”启动意味着OS主页 屏幕或应用程序列表,对吗?即来自不在 应用。
这并不重要 - 它只是谁设置 Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED。标准发射器设置 这是从图标启动应用程序时。您可以自己设置 你要。
4)clearTaskOnLaunch是否清除活动堆栈 活动从主屏幕启动,或者就在那时启动 活动的过程是从主屏幕开始的?因为文档 表示前者,但此处的帖子表示后者。我猜这个 取决于“发射”的定义是什么?
每当从主屏幕启动时。流程这一事实 杀死并重新启动应该对用户不可见。
我以各种可想象的方式操纵clearTaskOnLaunch 绝对没有效果。我把它放在了我的根活动中 清单,然后将它放在每个活动中,以确保重新启动 完全杀死进程后我的申请等等。我的活动 堆栈根本没有被清除。
设置以此为例 - 如果您进入设置,请向下挖掘 一点,按回家,然后再次启动设置,你将最终进入 家庭活动,而不是你上次去的地方。它只是设置 应用程序主要活动的标志。