4

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

我在我的清单中使用TaskStackBuilder待处理的 Intent 来创建一个合成的 backstack android:parentActivityName

到目前为止,很容易。当应用程序未启动时,一切都按预期工作。但是如果应用程序在后台(任务正在运行),挂起的 Intent 也会使用清单中定义的父项启动我想要的活动,但会重置现有任务。问题是用户在此期间启动的其他活动也被清除了。 在此处输入图像描述

所以一个想要实现的是:

  1. 如果应用程序未启动,则使用合成的 backstack (MainActivity) 打开所需的活动
  2. 如果应用程序正在运行,请尊重当前的任务顺序,只需将所需的活动推送到它上面。

我似乎无法使其与TaskStackBuilder.

我会很高兴有一些见解。

4

1 回答 1

4

你不能用TaskStackBuilder. 它不是为此而设计的。它总是重置任务开始。

我会做以下事情:

  • 让通知启动一个Activity. 不要使用TaskStackBuilder也不要创建任何人为的 back-stack。如果应用程序当前处于活动状态,这Activity将在应用程序的当前任务中运行,并将置于最近Activity打开的任务之上。
  • onCreate()这个新的Activity中,检查这Activity是否是使用isTaskRoot(). 如果这Activity是任务的根,这意味着应用程序在启动 this 之前未处于活动状态Activity。在这种情况下,您可以使用创建一个人工后台堆栈TaskStackBuilder并以您想要的方式再次启动该事物(这将重置任务)。
于 2016-08-25T15:21:01.557 回答