gpt4 book ai didi

android - 返回调用应用程序时防止 SingleTask 应用程序关闭

转载 作者:行者123 更新时间:2023-11-30 04:08:15 26 4
gpt4 key购买 nike

我有两个应用程序,我将它们分别称为应用程序 A 和应用程序 B。应用程序 B 是一个单任务应用程序,通常情况下,如果您从主屏幕启动此应用程序并使用后退按钮,您将不会被允许返回主屏幕。现在假设应用程序 A 需要使用 Intent 调用应用程序 B。如果用户随后在应用程序 B 中使用后退按钮,我确实希望他们返回到应用程序 A。但是由于我覆盖了后退按钮,因此无法使用后退按钮返回到应用程序 A。

如果应用程序 A 调用它时应用程序 B 正在运行,我如何才能返回到应用程序 A 但确保应用程序 B 继续运行?如果应用程序 B 在应用程序 A 调用它时未运行,则应用程序 B 应该在按下后退按钮时关闭(被销毁)。

我使用的是 Android 2.2

更新:

我尝试了以下方法:

  @Override
public void onBackPressed()
{
try
{
if (this.returnToClient)
moveTaskToBack (true);

this.returnToClient = false;
}
catch (Exception ex)
{
}
}

如果 Activity 是由调用应用启动的,我会通过检查传入的一些包数据将 returnToClient 设置为 true。

现在,如果我按下“后退”按钮,应用 B 将移至后台,而应用 A 将移至前台。看起来不错。现在,如果我按下主页按钮,然后启动应用程序 B,应用程序 B 就会从它停止的地方开始。也不错。现在是坏的部分。如果我长按主页按钮调出历史列表,然后点击应用程序 B 的图标,onNewIntent 方法将被调用,并且传入相同的数据,就好像应用程序 A 启动了 Activity 。所以我猜测 Android 对待从主屏幕启动应用程序的方式与从历史列表启动应用程序的方式不同。为什么?我不知道。似乎历史与 最后启动 Activity 有关,并将 bundle 数据保留为该历史的一部分。这很奇怪,它会导致不需要的行为,使应用程序 B 看起来像是刚从应用程序 A 调用的。

最佳答案

让 AppA 使用带有 EXTRA 的 Intent 启动 AppB,表明它是从 AppA 启动的,如下所示:

Intent intent = new Intent(this, AppB.class);
intent.putExtra("returnToAppA", "true");
startActivity(intent);

然后,当 AppB 捕获“返回”键时,它可以检查它是否是从 AppA 启动的,如果是,它可以像这样返回到 appA:

Intent intent = new Intent(this, AppA.class); // Use the starting
// (root) Activity of AppA here
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);

设置 FLAG_ACTIVITY_NEW_TASK 将确保不会创建 AppA 的新实例,但它只会返回到包含 AppA 的现有任务。

关于android - 返回调用应用程序时防止 SingleTask 应用程序关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11275019/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com