Appearance
deeplink-navigation-demo
1. 实验目标
验证深链进入二级页时,为什么必须补“合成返回栈”:
DeepLinkDetailActivity声明parentActivityName- 通过 Deep Link 打开详情页后,系统返回键先回到 Home,再退出应用
- 用
android:autoVerify="true"演示 App Links 的标准落点
2. 对应事故样板
- 为什么外部拉起详情页后,返回键一按就直接退出?
- 一句话答:因为任务栈里只有详情页,没有父页面;用户不是“返回上一层”,而是直接退回外部来源。
- 为什么状态路由治理要关心 App Link,而不只关心 Navigator API?
- 一句话答:深链不仅是跳页问题,还涉及域名校验、安全唤起和返回栈体验,单纯的页面跳转库管不了这些系统边界。
3. 运行方式
bash
cd labs/android/host
./gradlew installDebug1
2
2
打开 Android Host → 打开 Deep Link 返回栈实验室,再点击“用 https Deep Link 打开详情页”。
4. 观察步骤
- 进入
DeepLinkHomeActivity - 点击按钮,用
https://engineering-review.dev/orders/42拉起详情页 - 在详情页按系统返回键
- 预期先回到 Home,再次返回才退出应用
5. 关键实现速览
5.1 详情页声明父级,系统才能补返回链
xml
<activity
android:name=".topics.state_routing_architecture.deeplink_navigation_demo.DeepLinkDetailActivity"
android:parentActivityName=".topics.state_routing_architecture.deeplink_navigation_demo.DeepLinkHomeActivity">1
2
3
2
3
这段配置说明:深链页不是孤岛;必须显式告诉系统“上一层是谁”。
完整源码:AndroidManifest.xml
5.2 Deep Link 命中详情页
xml
<intent-filter android:autoVerify="true">
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="https" android:host="engineering-review.dev" android:pathPrefix="/orders/" />
</intent-filter>1
2
3
4
5
6
2
3
4
5
6
这段配置说明:Deep Link 的真实治理点在系统入口,而不是页面内部 if/else。
完整源码:AndroidManifest.xml
6. 对应知识库文档
- 理论主文档:深链 (Deep Link)、App Link 与合成返回栈治理
- 状态分层总览:状态管理、路由、架构