Android中如何防止切换回App A时App B保留在后台?

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

我有两个 Android 应用程序,App A 和 App B,我正在使用 Intents 在它们之间切换。

场景: 应用程序 A 使用 Intent 打开应用程序 B。 应用程序 B 完成了其任务,现在我需要用户切换回应用程序 A。 完成 App B 中的任务后,我想返回到 App A,但 App B 不应该留在后台。

问题: 从应用程序 B 切换回应用程序 A 时,用户可以按后退按钮并导航回应用程序 B 中之前的活动,这是我不希望的。 应用程序 B 包含 4 个活动: 主活动(首次打开应用程序 B 时启动)。 从应用程序 A 打开的其他 3 个活动。 每次应用程序 A 切换到应用程序 B 时,我希望应用程序 B 的行为就像是一个新会话,后台不保留以前的活动堆栈。

目标: 我需要确保当从应用程序 B 切换回应用程序 A 时,应用程序 B 不会以其之前在堆栈中的活动保留在后台。本质上,我想在切换回应用程序 A 时清除应用程序 B 的活动堆栈,以便按后退按钮不会显示应用程序 B 的先前屏幕

我尝试过的: 我已经使用意图从应用程序 A 打开应用程序 B,反之亦然,但我似乎无法正确清除应用程序 B 的活动堆栈。 任何有关如何实现这一目标的帮助或指导将不胜感激!

android android-intent android-activity android-background android-task
1个回答
0
投票

从应用程序 A 启动应用程序 B 时,在 Intent 中使用以下标志来清除堆栈:

val intent = Intent(this, AppBMainActivity::class.java)
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK)
startActivity(intent)
  • FLAG_ACTIVITY_NEW_TASK
    :此标志确保 App B 在新任务中启动。
  • FLAG_ACTIVITY_CLEAR_TASK
    :此标志会清除 App B 任务中所有现有的 Activity,因此当 App B 启动时,Activity 堆栈为空。

  • 当您使用这些标志时,应用程序 B 堆栈中之前的所有活动都将被删除,并且应用程序 B 会像新会话一样启动。
  • 这可以确保当用户从应用程序 B 切换回应用程序 A 并按下后退按钮时,应用程序 B 之前的活动不会出现在返回堆栈中。
© www.soinside.com 2019 - 2024. All rights reserved.