gpt4 book ai didi

android - 如何在使用不同的 Intent 启动 Activity 时防止其出现多个实例

转载 作者:IT老高 更新时间:2023-10-28 13:01:13 29 4
gpt4 key购买 nike

我在使用 Google Play 商店应用(以前称为 Android Market)上的“打开” 按钮启动应用程序时遇到了一个错误。似乎从 Play 商店启动它使用的 Intent 与从手机的应用程序图标菜单启动它不同。这会导致启动同一个 Activity 的多个副本,这些副本相互冲突。

例如,如果我的应用由 Activity A-B-C 组成,那么此问题可能会导致 A-B-C-A 堆栈。

我尝试在所有 Activity 上使用 android:launchMode="singleTask" 来解决此问题,但是每当我点击 HOME 时,它都会产生将 Activity 堆栈清除为根目录的不良副作用按钮。

预期的行为是: A-B-C -> HOME -> 当应用程序恢复时,我需要: A-B-C -> HOME -> A-B-C

有没有一种好方法可以防止启动多个相同类型的 Activity,而无需在使用 HOME 按钮时重置为根 Activity?

最佳答案

将此添加到 onCreate 中,您应该一切顺利:

// Possible work around for market launches. See https://issuetracker.google.com/issues/36907463
// for more details. Essentially, the market launches the main activity on top of other activities.
// we never want this to happen. Instead, we check if we are the root and if not, we finish.
if (!isTaskRoot()) {
final Intent intent = getIntent();
if (intent.hasCategory(Intent.CATEGORY_LAUNCHER) && Intent.ACTION_MAIN.equals(intent.getAction())) {
Log.w(LOG_TAG, "Main Activity is not the root. Finishing Main Activity instead of launching.");
finish();
return;
}
}

关于android - 如何在使用不同的 Intent 启动 Activity 时防止其出现多个实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4341600/

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