使用FLAG_ACTIVITY_NEW_TASK和taskAffinity将数据发送到活动

时间:2015-06-22 22:29:16

标签: android android-intent

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

Send data to activity with FLAG_ACTIVITY_REORDER_TO_FRONT

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

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

我想完成:

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

  2. 如果某个实例已经存在,请将它所在的任务(整个任务,而不仅仅是root / one活动)带到前面,并且:

  3. 如果任务当前显示子活动,则不执行任何操作

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

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

1 个答案:

答案 0 :(得分:0)

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

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

此处有更多详细信息,即使此问答与PendingIntent和通知相关:

Intent from notification does not have extras