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

Jim*_*anB 4 android android-intent android-notifications android-pendingintent taskstackbuilder

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

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

到目前为止,一切都很简单。当应用程序未启动时,一切按预期工作。但是,如果应用程序位于后台(任务正在运行),待处理的 Intent 还会使用清单中定义的父级启动我所需的活动,但会重置现有任务。问题是用户同时启动的其他活动也会被清除。 在此输入图像描述

所以想要实现的是:

  1. 如果应用程序未启动,请使用合成后台堆栈(MainActivity)打开所需的活动
  2. 如果应用程序正在运行,请尊重当前的任务顺序,并将所需的活动推到其之上。

我似乎无法让它与TaskStackBuilder.

我很乐意获得一些见解。

Dav*_*ser 6

你真的不能用 来做到这一点TaskStackBuilder。它不是为此而设计的。它总是首先重置任务。

我会做以下事情:

  • 让通知启动Activity. 不要使用TaskStackBuilder也不要创建任何人为的后堆栈。如果应用程序当前处于活动状态,这Activity将在应用程序的当前任务中运行,并且它将放在最近Activity打开的任务之上。
  • onCreate()这个新文件中Activity,检查这是否Activity是使用的任务的根isTaskRoot()。如果这Activity是任务的根目录,则意味着该应用程序在启动此任务之前未处于活动状态Activity。在这种情况下,您可以使用创建一个人工后堆栈TaskStackBuilder并按照您想要的方式再次启动该事物(这将重置任务)。