如何以编程方式在任务堆栈顶部显示活动?

问题描述 投票:0回答:1

我的应用程序启动一个前台服务,该服务保持与服务器的连接。它显示了 MainActivity 中显示的带有endingIntent 的通知。当我(用户)点击应用程序图标(在桌面或应用程序列表上)时,它会显示“任务堆栈”。我的意思是,如果启动了 MainActivity,它会显示它,如果用户转到活动 B 或 C(或启动一些其他活动),它会显示它(我的意思是任务堆栈中的顶部活动)。有一个问题 - 如果用户点击通知,他们会再次看到 MainActivity(在堆栈顶部),但我期望任务堆栈顶部(活动 B、C 或用户最后启动的其他活动)。

当我为 MainActivity“singleTask”设置属性时,一半解决了,现在它始终是任务堆栈的根,但我丢失了所有活动(B、C 和用户启动的其他活动)。类似于在堆栈顶部重用活动中的解决方案类似,但我只需要根目录中的一个活动。

也许我的逻辑是错误的,我需要其他方法来解决这个问题。但我想知道如何像应用程序图标一样以编程方式显示任务堆栈(顶部活动)?

android android-activity notifications android-pendingintent
1个回答
0
投票

文档任务和返回堆栈描述了如何正确处理导航。

简而言之,如果用户点击您的导航并且您将他们带到应用程序中的活动,那么当他们单击“返回”时,他们应该在您的应用程序的活动层次结构中向上移动,直到到达主屏幕。他们不应该“永远”去另一个任务中的堆栈。也就是说,如果它们在您的应用程序中的 Activity C 中,并且您发送了一条通知,他们点击后将它们带到 Activity A,那么单击“后退”应该会将它们带到 A 的 parent,而不是 C。想要转到 C,他们可以使用“最近”。 在较旧的平台上,“最近”不可用。

这是设计使然。

要构建正确的合成返回堆栈,请使用

TaskStackBuilder

© www.soinside.com 2019 - 2024. All rights reserved.