共享时“FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET”的目的是什么?

时间:2014-01-20 10:42:21

标签: android android-intent back-stack android-sharing

我已阅读,http://developer.android.com/guide/components/tasks-and-back-stack.html我查了FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET的文档,但我仍然不明白为什么谷歌的一名员工决定将其纳入博客文章中有关分享的内容。

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()方法中,但如果谷歌在博客文章中使用它,那么我确信他们知道这种情况会发挥作用。提前谢谢。

2 个答案:

答案 0 :(得分:9)

文章在第一个代码示例中解释了它:

  

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

如果你遗漏了国旗,当你回到你的应用程序时(从主屏幕,从最近等),你会看到共享目标的Activity(消息/邮件/ IM应用程序)而不是你的。尝试一下,你会看到差异。

答案 1 :(得分:4)

enter image description here

此标志标记被调用的活动,并且在重置任务时清除(从堆栈中删除)的所有活动。一旦使用FLAG_ACTIVITY_RESET_TASK_IF_NEEDED将任务带到前台,就会执行此重置,当用户从主屏幕,主菜单或最近启动的活动列表恢复任务时,系统始终会设置此任务。

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

更多:Microsoft.IdentityModel.Protocols.ConfigurationManager<T>