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

KMP Decompose多保留组件重复注册Key致Android应用崩溃求助

Decompose库Android端retainedComponent重复注册崩溃问题解决

需设置唯一Key的位置

  • 所有通过retainedComponent创建的组件实例,必须传入全局或所在作用域内唯一的key参数
  • 具体涉及两个核心位置:
    • Android入口创建RootComponent的retainedComponent调用处
    • Android入口创建DashBoardRootComponent的retainedComponent调用处

代码错误分析

  • 你在Android端创建这两个根组件时,没有为retainedComponent指定自定义的唯一key,大概率使用了默认值(比如空字符串)或者重复的key
  • Decompose在Android端依赖系统的SavedStateRegistry管理组件状态,相同key会导致重复注册同一个SavedStateProvider,直接触发崩溃
  • 桌面端没有Android的SavedState机制,所以不会检测到这个冲突,因此运行正常

修正示例

创建RootComponent时指定唯一key:

val rootComponent = retainedComponent(key = "root_component") {
    RootComponent(/* 你的参数 */)
}

创建DashBoardRootComponent时指定另一个唯一key:

val dashboardRootComponent = retainedComponent(key = "dashboard_root_component") {
    DashBoardRootComponent(/* 你的参数 */)
}

额外注意

如果后续在组件内部嵌套使用retainedComponent创建子组件,也要确保key在父组件的SavedState作用域内唯一,避免同类冲突

内容的提问来源于stack exchange,提问作者Vishal Bhimporwala

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 12:59:54