我和这个优秀问题的要求几乎相同:
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
我想完成:
如果不存在实例,请创建一个新实例作为新任务,并将其传递给数据。 (这部分已经有效,我可以在onCreate中获取数据)
如果某个实例已经存在,请将它所在的任务(整个任务,而不仅仅是root / one活动)带到前面,并且:
如果任务当前显示子活动,则不执行任何操作
如果任务没有显示子活动(只是root / main活动),则处理传递的数据并更新UI
我有一个带有按钮的任务,“转到事件”,点击它时需要打开/启动日历任务并突出显示特定事件(但如果在顶部显示另一个活动,日历将忽略该请求它)。
答案 0 :(得分:0)
感谢@ qbix的评论,我找到了答案:
添加Intent.FLAG_ACTIVITY_SINGLE_TOP - 当与FLAG_ACTIVITY_NEW_TASK结合使用时似乎无效,但它可以正常工作。它实现了我上面列出的所有行为,并且只有在活动位于堆栈顶部时才触发NewIntent,因此我甚至不必担心检测到并忽略。
此处有更多详细信息,即使此问答与PendingIntent和通知相关: