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

如何为Compose导航的KYC流程实现Hilt作用域的Repository?

KYC流程内存数据管理方案(Kotlin + Jetpack Compose + Hilt)

问题背景

我正在用Kotlin、Jetpack Compose和Hilt构建一款Android应用,其中包含一个由约10个页面组成的KYC流程——该流程拥有独立的导航图,且每个页面都配有专属ViewModel。核心需求如下:

  • 在KYC流程中收集用户数据(如身份证信息、地址等),仅在流程进行期间将数据保留在内存中
  • 当用户退出KYC流程(如返回首页或个人资料页)时,相关数据需被自动清除

初始方案分析

最初考虑了两种方案,但均不符合需求:

  • 方案1:作用域限定为KYC导航图的共享ViewModel
    顾虑:每个页面已有独立ViewModel,引入共享ViewModel容易造成逻辑混淆,不符合当前的代码结构设计。
  • 方案2:键值存储或本地数据库
    顾虑:这类持久化存储方式会导致用户退出KYC流程后,数据仍被保留,违背了"仅流程内存存数据"的核心要求。

核心疑问

我更倾向采用仓库(Repository)方案:让每个页面的ViewModel接收同一个仅在KYC流程期间存在的Repository实例。但存在疑问:

如何通过Hilt实现这个KYC作用域的Repository?怎样为其设置作用域,使其仅在Compose的KYC流程期间存活,并在流程结束后自动清除实例及数据?

最终解决方案

更新:我最终选择使用SavedStateHandle,它满足需求的特性如下:

  • 当ViewModel仍处于返回栈中时,数据会被保留;一旦页面条目从返回栈中移除,数据随之清除
  • 如果导航配置为在ANR时保留返回栈,还能在应用崩溃时保留用户最后一页提交前的数据

内容的提问来源于stack exchange,提问作者Şahan Şenvar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 18:13:13