2011-03-28 65 views
6

阅读Android documentation,并且这里的一些答案使得clearTaskOnLaunch应该工作的模糊不清。特别是clearTaskOnLaunch HowTo?

1)如何识别根活动?它是简单的与DEFAULT,LAUNCHER或MAIN意向过滤器吗?

2)从文档中的“主屏幕”启动意味着OS主屏幕或应用程序列表,更正?即不在应用程序中。

3)clearTaskOnLaunch是否清除活动堆栈,无论何时该活动从主屏幕启动,或仅当该活动的进程从主屏幕启动时?因为文档指出前者,但这里的帖子指出后者。我想这取决于“发射”的定义是什么。 4)是否“清除”活动堆栈意味着删除它,或让活动循环遍历onCreate()和finish()?

我已经操纵clearTaskOnLaunch以各种可以想象的方式完全没有效果。我已经将它放在清单中的根活动中,然后将它放在每一个活动中,以确保它们完整无缺,重新启动我的应用程序,等等。我的活动堆栈根本没有被清除。

任何人都可以提供关于如何实施clearTaskOnLaunch的完整概述?

回答

5

下面是从Android工程师,组完全缓解:http://groups.google.com/group/android-developers/browse_thread/thread/da024bcaf4e1960f

阅读Android文档和一些问题的答案在这里(和 的StackOverflow)已经离开了暧昧clearTaskOnLaunch如何 应该行为,具体如下:

1)“清除”活动堆栈是否意味着删除它,或者通过onCreate()和finish()完成活动循环?

堆栈中正在清除的所有活动都将通过 生命周期,就像它们调用finish()一样。一般情况下,根活动将保持不变。

2)如何识别根活动?它是 它只是与 DEFAULT,LAUNCHER或MAIN意向过滤器?

这基本上是堆栈中的第一个活动。 Intent是用于启动堆栈的 Intent。

3)的文档中,从“主屏幕”启动意味着OS家 屏幕或应用程序列表中,是否正确?即从不在 应用程序中。

它并不真正的问题 - 它只是谁设置 Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED。当从图标启动应用程序时,标准启动程序设置为 。你可以自己设置,如果你想要 。

4)是否clearTaskOnLaunch清除活动堆栈每当 活动是从主屏幕启动,或者只是当 活动的过程是从主屏幕开始了吗?由于文档 指示前者,但这里的帖子指示后者。我猜这 取决于“发射”的定义是什么?

每当它从主屏幕启动时。进程 被终止并重新启动的事实应该对用户不可见。

我已经在 可以想像的任何方式操纵clearTaskOnLaunch绝对没有影响。我已经将它放在 清单中的根目录中,然后将它放置在每个活动中以确保其完整性,在完全终止进程后重新启动 我的应用程序等。我的活动 堆栈根本没有被清除。

设置使用这个作为一个例子 - 如果你去设置,向下挖掘 了一下,按home,然后再次启动设置,你最终会在 家庭活动,而不是无论你最后去了。它只设置 其应用主要活动的标志。