0

我有一个A活动launchMode=singleTopB以及具有standart启动模式的活动。

第一种情况:我从installerGoogle Play(不是从启动器)启动应用程序,然后B从活动启动其他活动A(在任务堆栈之后将是A -> B(堆栈顶部))。如果我最小化应用程序并从启动器打开应用程序,则活动A开始到应用程序堆栈的顶部(A -> B -> A)。

其他情况(正确的情况):如果我从启动器(不是谷歌播放)启动应用程序,然后启动活动B,最小化应用程序并从 laucner 打开应用程序,然后应用程序恢复以前的状态(堆栈:)A -> B

在第一种情况下,它是否能够防止将活动启动A到堆栈顶部?

4

1 回答 1

1

我在当前的项目中遇到了这个问题(大约 2/3 周前)。它不是你的堆栈的问题。当应用程序从安装程序/Google Play 启动并最小化它时,转到启动器,应用程序会将启动活动添加到堆栈顶部。这仅发生在某些设备中。杀死应用程序一次后,它开始正常工作。

解决方法是检查 App Start 是否是从 Launcher 启动的。我找到了这个答案,它有我想到的确切解决方法:

    if (!isTaskRoot()
            && getIntent().hasCategory(Intent.CATEGORY_LAUNCHER)
            && getIntent().getAction() != null
            && getIntent().getAction().equals(Intent.ACTION_MAIN)) {

        finish();
        return;
    }

于 2019-07-31T09:25:23.447 回答