You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Compose Navigation中App Link合成返回栈在Android13失效问题咨询

这确实是Android 13针对App Link启动的默认行为变更,和低版本的处理逻辑存在差异。

问题原因

通过adb命令启动时,系统会默认将应用的主Activity纳入返回栈,符合导航原则里起始目标入栈的要求;但Android 13优化了App Link的启动流程,默认只会直接打开目标页面,不会自动构建包含主页面的返回栈,所以按下返回键会直接退出应用。

解决方法

有几种可行的修复方式:

  • 用TaskStackBuilder手动构建返回栈
    在处理App Link的Activity中,接收到VIEW Intent时,手动创建包含主页面的任务栈,再启动目标页面。示例代码:

    val taskStackBuilder = TaskStackBuilder.create(this)
    // 先添加应用主页面到返回栈
    taskStackBuilder.addNextIntent(Intent(this, MainActivity::class.java))
    // 再添加当前要打开的目标页面
    taskStackBuilder.addNextIntent(intent)
    // 启动完整栈
    taskStackBuilder.startActivities()
    // 关闭当前直接启动的页面
    finish()
    
  • 调整Navigation Component的DeepLink配置
    如果使用Navigation组件,确保导航图中起始目标的DeepLink配置了正确的返回栈规则。比如在DeepLink标签里设置android:popUpTo="@id/main_dest"并将android:popUpToInclusive设为false,保证主页面留在返回栈中;或者在处理DeepLink请求时,用NavDeepLinkBuilder构建包含返回栈的启动Intent:

    val deepLinkIntent = NavDeepLinkBuilder(this)
        .setGraph(R.navigation.nav_graph)
        .setDestination(R.id.target_dest)
        .createTaskStackBuilder()
        .intent
    startActivity(deepLinkIntent)
    
  • 检查Activity启动模式
    确保处理App Link的Activity没有设置singleInstance或singleTask这类会破坏返回栈的启动模式,尽量使用默认的standard模式,避免干扰系统的栈管理逻辑。

内容的提问来源于stack exchange,提问作者Chethan N

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 18:43:16