6

我已阅读http://developer.android.com/guide/components/tasks-and-back-stack.html并查看了文档FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET,但我仍然不明白为什么 Google 的员工决定包含它在他们关于分享的博客文章中。

http://android-developers.blogspot.com/2012/02/share-with-intents.html

这是他们的代码片段:

Intent intent=new Intent(android.content.Intent.ACTION_SEND);
intent.setType("text/plain");
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET);

// Add data to the intent, the receiving app will decide what to do with it.
intent.putExtra(Intent.EXTRA_SUBJECT, “Some Subject Line”);
intent.putExtra(Intent.EXTRA_TEXT, “Body of the message, woot!”);

文档说:

If set, this marks a point in the task's activity stack that should be cleared when the task is reset...

我仍然非常不确定这面旗帜。我不确定我是否能想到将它包含在我的 share() 方法中的原因,但如果 Google 在博客文章中使用它,那么我确信他们知道这会发挥作用的场景。提前致谢。

4

2 回答 2

9

文章在第一个代码示例中对其进行了说明:

此标志从活动堆栈中清除被调用的应用程序,以便用户在下次重新启动此应用程序时到达预期的位置。

如果您忽略该标志,当返回您的应用程序(从主屏幕、最近等)时,您将看到Activity共享目标(消息/邮件/IM 应用程序)而不是您的。试试看,你会看到不同。

于 2014-01-20T11:35:35.337 回答
5

在此处输入图像描述

此标志标记被调用的活动和放置在其顶部的所有活动,以便在任务重置时清除(从堆栈中删除)。使用 FLAG_ACTIVITY_RESET_TASK_IF_NEEDED 将任务置于前台后立即执行此重置,当用户从主屏幕、主菜单或最近启动的活动列表恢复任务时,系统始终设置此设置。

您可以使用它在任务堆栈中定义一个点,一旦任务被发送到后台,所有启动的活动都应该被“忘记”。

更多:看这里

于 2015-07-06T10:24:50.497 回答