从现有任务中的通知开始新活动

时间:2016-08-25 10:27:58

标签: android android-intent android-notifications android-pendingintent taskstackbuilder

我的应用会收到推送,并根据推送类型打开不同的活动。

我使用TaskStackBuilder作为待处理的Intent,在我的清单中与android:parentActivityName一起创建合成backstack。

到目前为止,这么容易。当应用程序未启动时,一切都按预期工作。 但如果应用程序处于后台(任务正在运行),则待处理的Intent也会使用清单中已定义的父级但重置现有任务启动我所需的活动。问题是用户在此期间启动的其他活动也会被清除。 enter image description here

所以想要实现的目标是:

  1. 如果应用程序未启动,请使用合成反向堆栈(MainActivity)打开所需的活动
  2. 如果应用程序正在运行,请尊重当前任务顺序,并在其上面推送所需的活动。
  3. 我似乎无法使用TaskStackBuilder

    我很乐意获得一些见解。

1 个答案:

答案 0 :(得分:3)

您无法通过TaskStackBuilder真正做到这一点。它不是为此而设计的。它总是重置任务开始。

我会做以下事情:

  • 让通知开始Activity。不要使用TaskStackBuilder并且不要创建任何人工后台。如果应用程序当前处于活动状态,则此Activity将在应用程序的当前任务中运行,并且它将被置于最近打开的Activity之上。
  • 在此新onCreate()的{​​{1}}中,使用Activity检查此Activity是否为任务的根目录。如果此isTaskRoot()是任务的根,则表示该应用在启动此Activity之前未处于活动状态。在这种情况下,您可以使用Activity创建一个人工后端堆栈,然后按照您希望的方式再次启动它(这将重置任务)。