android - 隐式深层链接无法正常工作 - onCreate 调用了两次

标签 android kotlin android-architecture-navigation android-deep-link

当我从链接打开我的应用程序时,如果它已经在堆栈上(打开),什么也没有发生。应用程序的现有实例打开,没有任何重定向。我发现这个 Intent 的原因被称为。所以,我在 onNewIntent 方法中添加了 setIntent(newIntent) ,但它没有帮助。然后我添加了以下代码:

    override fun onNewIntent(intent: Intent?) {
        super.onNewIntent(intent)
        //did not help
        //setIntent(intent)
        findNavController(R.id.container).handleDeepLink(intent)
    }


但是,然后 onNewIntent 被调用了两次。点击链接后的日志结果为:(存在应用实例时)
2019-11-19 10:43:18.758 D/CORN_DEBUG: onNewIntent
2019-11-19 10:43:18.805 D/CORN_DEBUG: onNewIntent
2019-11-19 10:43:19.248 D/CORN_DEBUG: onCreate Main Activity

否则,结果是:
2019-11-19 10:45:05.272 D/CORN_DEBUG: onCreate Main Activity
2019-11-19 10:45:05.524 D/CORN_DEBUG: onNewIntent
2019-11-19 10:45:06.041 D/CORN_DEBUG: onCreate Main Activity

由于 onCreate 被调用两次,屏幕闪烁。问题是什么?

附言启动模式是单任务。

最佳答案

处理深层链接
强烈建议在使用 Navigation 时始终使用默认的标准启动模式。使用标准启动模式时,Navigation 通过调用 handleDeepLink() 自动处理深层链接,以处理 Intent 中的任何显式或隐式深层链接。但是,如果在使用诸如 singleTop 之类的备用启动模式时重新使用 Activity,这不会自动发生。这种情况下,需要在onNewIntent()中手动调用handleDeepLink(),如下例所示:
https://developer.android.com/guide/navigation/navigation-deep-link#handle

关于android - 隐式深层链接无法正常工作 - onCreate 调用了两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58927469/

相关文章:

java - 类型 java.lang.String 的值无法转换为 JSONArray

recursion - Kotlin尾递归函数导致堆栈溢出

Android导航组件打开url

android - Koin 共享依赖关系范围为嵌套图

android - 使用导航组件移动到新 fragment 时出错

android - Google I/O 2011 开发工具视频 - 创建新按钮去哪儿了?

android - 创建自定义通知,包括编辑文本 android

android - 如何在android中的View上交换位图图像?

java - Service.startForeground 震动设备

Android MVVM 多 API 调用