Android活动通知BackStack管理

时间:2014-09-13 09:30:13

标签: android android-activity back-stack

假设有3项活动:

  1. MainActivity
  2. ActivityA
  3. ActivityB
  4. 使用场景如下:
      - >然后打开MainActivity   - >它打开ActivityA然后
      - > ActivityA打开ActivityB然后
      - >用户向后导航,当MainActivity关闭时,会为ActivityB
    <

    创建通知

    现在,当用户点击通知时,它会将用户直接发送到ActivityB,如果向后导航,它将转到ActivityB之前的最后一个打开的活动,在这种情况下将是ActivityA - &gt; MainActivity。

    如果MainActivity直接打开ActivityB(并按上述方式向后导航),那么当点击通知时它会再次发送到ActivityB,但这次,当向后导航时,B之前的最后一个活动将是MainActivity,所以它应该打开MainActivity而不是上述(ActivityA - &gt; MainActivity)。

    我想知道搜索和研究的内容,以及(最终)如何完成此行为。

    提前致谢。

1 个答案:

答案 0 :(得分:0)

最干净的解决方案是通过Intent为您的活动提供适当的参数,并在对onBackPressed作出反应时对其进行评估。这样,您可以通过正常导航或通知来区分活动的启动时间。

编辑: 你想要的是实际确保当一个活动已经被显示并且通过通知打开一个新活动时,它被放在后面的堆栈上。我认为这应该在OnNewIntent中处理被调用的活动,因此它知道它是从正常导航还是从通知开始。您可以通过在Intent extras中设置一些标志来实现这一点,如上面原始答案中所述。如何具体实现这一点应该符合this blog post的要求。减去通知部分。

也许this question还可以在你的意图上设置适当的标志之前阐明如何确定应用程序的状态。