Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android:handleDeeplink()之后导航深度链接未失效_Android_Android Activity_Android Jetpack Navigation_Android Deep Link_Onnewintent - Fatal编程技术网

Android:handleDeeplink()之后导航深度链接未失效

Android:handleDeeplink()之后导航深度链接未失效,android,android-activity,android-jetpack-navigation,android-deep-link,onnewintent,Android,Android Activity,Android Jetpack Navigation,Android Deep Link,Onnewintent,我使用Jetpack导航在我的应用程序中实现了深度链接。我的应用程序遵循单活动架构。片段之间的导航由导航图组织 我发现了一个案例,其中调用了onCreate和onNewIntent回调。但这不应该发生。让我解释一下用例: 用户已从应用重定向到浏览器 当用户在浏览器中时,应用程序关闭(由操作系统或用户关闭) 用户通过深度链接重定向回应用程序 上面用例的Logcat如下所示(按正确的顺序): 2021-05-13 09:01:53.261暂停MainActivity@336e6f1//重定向到浏览

我使用Jetpack导航在我的应用程序中实现了深度链接。我的应用程序遵循单活动架构。片段之间的导航由导航图组织

我发现了一个案例,其中调用了onCreate和
onNewIntent
回调。但这不应该发生。让我解释一下用例:

  • 用户已从应用重定向到浏览器
  • 当用户在浏览器中时,应用程序关闭(由操作系统或用户关闭)
  • 用户通过深度链接重定向回应用程序
  • 上面用例的Logcat如下所示(按正确的顺序):

    • 2021-05-13 09:01:53.261暂停MainActivity@336e6f1//重定向到浏览器
    • 2021-05-13 09:02:21.584 onDestroyMainActivity@336e6f1//应用程序已由用户或操作系统关闭
    • 2021-05-13 09:02:24.804创建后MainActivity@4a820dd//重定向回应用程序
    • 2021-05-13 09:02:24.940MainActivity@4a820dd
    • 2021-05-13 09:02:24.979创建后MainActivity@349ea37
    • 2021-05-13 09:02:25.102恢复MainActivity@349ea37
    • 2021-05-13 09:02:25.495 onDestroyMainActivity@4a820dd
    因此,应用程序一次创建两个
    MainActivity
    实例,在同一个实例中触发
    onCreate
    onNewIntent
    回调

    当用户在浏览器中时,应用程序未关闭时,logcat显示如下:

    • 2021-05-13 08:57:47.097暂停MainActivity@7507cde
    • 2021-05-13 08:58:18.310MainActivity@7507cde
    • 2021-05-13 08:58:18.312继续MainActivity@7507cde
    无论是
    singleTask
    还是
    singleInstance
    启动模式都没有改变任何东西

    我的问题是:

  • onCreate
    onNewIntent
    回调怎么可能一个接一个地调用
  • 为什么同时创建了两个
    MainActivity
    实例
  • 当用户从应用程序导航回来,然后通过最近的应用程序打开应用程序时,会触发与上面logcat中相同的日志。为什么会这样
  • 我真的很感谢任何回答我问题的人。在这里,我添加了我的代码:

    清单:

    
    
    导航图:

    
    
    主要活动:

    lazy提供的专用val navController{
    findNavController(R.id.mainNavigationFragment)
    }
    重写创建时的乐趣(savedInstanceState:Bundle?){
    setTheme(R.style.AppTheme)
    super.onCreate(savedInstanceState)
    设置支持操作栏(工具栏)
    NavigationUI.setupWithNavController(
    绑定导航,
    导航控制器
    )
    }
    覆盖Wintent(意图:意图?){
    super.onNewIntent(意图)
    mavController.handleDeepLink(意图)
    }
    
    调用浏览器的意图:

    试试看{
    startActivity(Intent(Intent.ACTION_视图,Uri.parse(url)))
    }捕获(例如:ActivityNotFoundException){
    showSnackBar(R.string.browser\u未找到,binding.root)
    }
    
    看起来这种行为是意料之中的。还有一个问题是,这种行为是否是有意的。还没有答案