Nav 组件 deeplink 不做条件导航

Nav component deeplink do not do conditional navigation

我正在使用 navcomponent deeplink 选项从通用 link 深入 link 到我的应用程序屏幕。

第 1 步:在 main_nav_graph 文件

中添加了 deeplink 参数

第 2 步:添加到我的 mainactivity

的清单文件

第 3 步:点击短信上的 link 以启动 deeplink

看到的场景:

在我的应用中,SplashActivity 是主启动器。但是 Main Activity 是初始化 navgraph 的地方。所以我在 Manifest

中添加了 main activity 的 navgraph 标签

主要 Activity 添加为单个任务。

现在,当我深入link时,我看到了:

  1. 我的 mainactivity 恢复了 2 次(看起来应用程序启动然后关闭然后再次启动并深入 link 到屏幕)

  2. 如果用户未登录,我会进行条件检查以停留在导航根视图。但我看到它仍然导航到深层link 屏幕,造成异常情况。

根据 Navigation 2.1.0-alpha06 release notes:

Navigation now suppresses the animation that occurs when recreating the activity when handling a deep link, fixing a visual flash. (b/130362979)

所以您应该升级到 Navigation 2.1.0(目前 2.1.0-rc01 以修复视觉故障)。

其次,根据 conditional navigation documentation,您应该使用登录屏幕作为图形的根。相反,如果用户未登录,每个需要登录的目的地都应将用户重定向到登录屏幕。这正是为了避免您遇到的情况:您希望用户立即被发送到正确的深层链接屏幕返回堆栈。