【问题标题】:What is the purpose of "FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET" when sharing?分享时“FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET”的目的是什么?
【发布时间】:2014-01-20 10:42:20
【问题描述】:

我已阅读 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

这是他们的代码 sn-p:

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 在博客文章中使用它,那么我确信他们知道这会发挥作用的场景。提前致谢。

【问题讨论】:

  • this documentation 中解释了一个用例。
  • 这个标志现在被弃用了,因为它和Intent.FLAG_ACTIVITY_NEW_DOCUMENT做同样的事情
  • @EGHDK 请将此问题标记为已回答,以帮助其他有相同问题的人。

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


【解决方案1】:

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

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

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

【讨论】:

  • 哦!这就说得通了。谢谢你的解释。
【解决方案2】:

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

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

更多:SEE HERE

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-10
    • 2023-04-05
    • 1970-01-01
    • 1970-01-01
    • 2023-03-12
    • 1970-01-01
    相关资源
    最近更新 更多