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

通过Hilt注入的SavedStateHandle在ViewModel的onClear触发时返回null是什么原因?

SavedStateHandle在ViewModel onClear()时返回null的原因
  • 生命周期设计的正常表现:onClear()触发代表当前ViewModel已经永久销毁,不会再被任何宿主复用。此时SavedStateHandle关联的SavedStateRegistry已经完成了状态持久化逻辑,内部持有的内存数据引用会被主动释放避免内存泄漏,该阶段访问SavedStateHandle获取数据本就会返回null,属于官方框架的既定设计,不是异常问题。
  • 自定义类型序列化失败:SavedStateHandle内部依赖Bundle存储数据,你代码中存储的CarTypesModel如果没有实现Parcelable或Serializable接口,在ViewModel销毁触发状态持久化操作时,数据无法正常写入Bundle会被直接丢弃,后续访问对应key就会返回null。
  • 存取类型不匹配:你的代码存在明显的类型不匹配问题:存入saveStateHandle的是CarTypesModel类型,但取出时泛型指定的是TypesModel,如果两个类不存在正确的继承/转换关系,反序列化阶段会直接返回null。
  • SavedStateHandle作用域不匹配:如果你的ViewModel是通过非对应宿主的ViewModelStore获取的(比如Fragment作用域的ViewModel用Activity的ViewModelStore创建),Hilt注入的SavedStateHandle没有绑定到正确的SavedStateRegistry,在宿主销毁时状态会提前被清空,也会出现访问返回null的情况。

内容的提问来源于stack exchange,提问作者Sanam Yavarpor

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 21:24:05