【问题标题】:Send data to activity with FLAG_ACTIVITY_NEW_TASK and taskAffinity使用 FLAG_ACTIVITY_NEW_TASK 和 taskAffinity 将数据发送到活动
【发布时间】:2015-06-22 22:29:15
【问题描述】:

我的要求与这个优秀的问题几乎相同:

Send data to activity with FLAG_ACTIVITY_REORDER_TO_FRONT

但是,我使用FLAG_ACTIVITY_NEW_TASK 是因为我的每个主要活动都需要作为新任务运行。在我的测试中,onNewIntent 在这种情况下不会被调用(即使活动已经在运行)。 那么我该如何向它传递数据呢?

我可以通过将launchMode 设置为singleTask 来调用onNewIntent,但是后来我遇到了这个错误:Android: bug in launchMode="singleTask"? -> activity stack not preserved

我想完成:

  1. 如果不存在实例,则创建一个新实例作为新任务,并向其传递数据。 (这部分已经可以了,我可以在onCreate中获取数据)

  2. 如果实例已存在,则将其所在的任务(整个任务,而不仅仅是根/一个活动)置于最前面,并且:

  3. 如果任务当前显示了子活动,则什么也不做

  4. 如果任务没有显示子活动(仅根/主活动),则处理传递的数据并更新 UI

我有一个带有“转到事件”按钮的任务,单击它需要打开/启动日历任务并突出显示特定事件(但如果顶部显示另一个活动,日历将忽略该请求)。

【问题讨论】:

  • 当我在上面说“日历任务”时,我指的是我自己的应用程序中的任务,而不是内置的日历应用程序或任何其他日历应用程序。
  • 你不能带着你的意图传递一堆额外的东西吗?
  • 这就是我所做的,涵盖了#1。我无法弄清楚 #2(以及 3 和 4),因为没有调用 onNewIntent,所以如果我的活动已经在运行,我该如何获取捆绑包?
  • 您是否尝试过this question 接受的答案中描述的解决方法?

标签: android android-intent


【解决方案1】:

感谢@qbix 的评论,我找到了这个答案:

添加 Intent.FLAG_ACTIVITY_SINGLE_TOP - 与 FLAG_ACTIVITY_NEW_TASK 结合使用时似乎无效,但它有效。它实现了我上面列出的所有行为,并且只有在活动位于堆栈顶部时才会触发 onNewIntent,所以我什至不必担心检测到并忽略它。

此处有更多详细信息,尽管此问答与 PendingIntent 和通知有关:

Intent from notification does not have extras

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-11-30
    • 2018-04-22
    • 2021-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多