Android导航隐式深度链接导致应用程序打开多个实例

Android导航隐式深度链接导致应用程序打开多个实例,android,android-jetpack,android-navigation,android-jetpack-navigation,Android,Android Jetpack,Android Navigation,Android Jetpack Navigation,我有一个包含两个活动和两个导航图的应用程序——第一个是带有入职流程的启动器活动,第二个是主要活动。我还有一个简单的设置,它遵循的是来自的隐式深度链接示例,用于实现登录链接(用户单击包含一些令牌的链接等) 导航流的第一个用例从FragmentOne到FragmentTwo到FragmentTwo,然后导航到main活动,关闭流程中的车载活动 第二个,有问题的用例是当用户单击在FragmentThree中设置的深层链接时,经过一些计算后,还需要导航到MainActivity关闭过程中的Onboard

我有一个包含两个活动和两个导航图的应用程序——第一个是带有入职流程的启动器活动,第二个是主要活动。我还有一个简单的设置,它遵循的是来自的隐式深度链接示例,用于实现登录链接(用户单击包含一些令牌的链接等)

导航流的第一个用例从
FragmentOne
FragmentTwo
FragmentTwo
,然后导航到
main活动
,关闭流程中的
车载活动

第二个,有问题的用例是当用户单击在
FragmentThree
中设置的深层链接时,经过一些计算后,还需要导航到
MainActivity
关闭过程中的
OnboardingActivity
。问题是,它实际上按预期工作,登录成功,但问题是,当用户通过深度链接启动应用程序并最小化应用程序时,如果再次单击应用程序图标,则会在具有深度链接的应用程序上启动一个新的应用程序实例,并且每次单击新的应用程序图标都会继续

这不是第一个流程的问题-每当你最小化应用程序并单击应用程序图标时,你就会回到启动的原始应用程序

这就是我到目前为止所做的:

  • 启动程序活动没有设置特殊标志(我尝试了
    android:noHistory=“true”
    android:clearTaskOnLaunch=“true”
    ,但运气不好)
  • 两个活动中都没有特殊的导航控制器内容
  • 我目前使用的是
    “androidx.navigation:navigation fragment ktx:2.3.1”
    “androidx.navigation:navigation ui ktx:2.3.1”
在这两种情况下,我都是这样启动
main活动的:

findNavController().navigate(FragmentThreeDirections.actionFragmentThreeToMainActivity())
requireActivity().finish()
以下是行动的定义:

<action
    android:id="@+id/action_fragment_three_to_main_activity"
    app:destination="@id/main_activity"
    app:enterAnim="@anim/fragment_fade_enter"
    app:exitAnim="@anim/fragment_fade_exit"
    app:launchSingleTop="true" />
我注意到的唯一区别是,
FragmentThree
中的backbackback在第一个和第二个用例之间是不同的。在常规流程中,第一个用例,在
F3
中,我们在backstack中有
F2
F3
(因为从F1到F2的动作包括一个
app:poputo=“@id/fragment\u one”
app:popuptinclusive=“true”
),但在第二个用例中,我们在backstack中有
F1
F3
,但在成功登录后,它们都会进入相同的backbackback状态,从而完成原始活动

我刚刚注意到一件新事情——当通过点击一个实际的电子邮件链接来测试深度链接时,我最终出现了与第二个流类似的不良行为,但这次我在应用程序最近列表中有两个应用程序,而原来有问题的流在应用程序最近列表中只有一个应用程序,但仍然启动了多个实例(我所说的多实例是指,每当我单击应用程序图标时,就会启动一个新的应用程序流,并且当我需要多次单击后退以关闭所有不同的
MainActivity
)实例时)

adb shell am start -a android.intent.action.VIEW -d "https://example.com/auth/login?token=asd\&session=321\&email=asd@asd.com"