我的应用会收到推送,并根据推送类型打开不同的活动。
我使用TaskStackBuilder
作为待处理的Intent,在我的清单中与android:parentActivityName
一起创建合成backstack。
到目前为止,这么容易。当应用程序未启动时,一切都按预期工作。 但如果应用程序处于后台(任务正在运行),则待处理的Intent也会使用清单中已定义的父级但重置现有任务启动我所需的活动。问题是用户在此期间启动的其他活动也会被清除。
所以想要实现的目标是:
我似乎无法使用TaskStackBuilder
。
我很乐意获得一些见解。
答案 0 :(得分:3)
您无法通过TaskStackBuilder
真正做到这一点。它不是为此而设计的。它总是重置任务开始。
我会做以下事情:
Activity
。不要使用TaskStackBuilder
并且不要创建任何人工后台。如果应用程序当前处于活动状态,则此Activity
将在应用程序的当前任务中运行,并且它将被置于最近打开的Activity
之上。onCreate()
的{{1}}中,使用Activity
检查此Activity
是否为任务的根目录。如果此isTaskRoot()
是任务的根,则表示该应用在启动此Activity
之前未处于活动状态。在这种情况下,您可以使用Activity
创建一个人工后端堆栈,然后按照您希望的方式再次启动它(这将重置任务)。