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

使用Koin时SavedStateHandle后台重启后取值为null的问题

问题:应用后台重启后SavedStateHandle取值异常,多次操作后恢复

我在ShareViewModel中引入了SavedStateHandle,在HomeFragment中从MainActivity获取该ShareViewModel并传入HomeViewModel。现在遇到的问题是:应用从后台重启后,从SavedStateHandle中获取的值为null,但重复后台重启操作约3次后,SavedStateHandle又能正常获取到值。

模块代码

Koin ViewModel模块

val viewModelModule = module {
    viewModel { ShareViewModel(get()) }
    viewModel { (shareViewModel: ShareViewModel) ->
        HomeViewModel(
            shareViewModel
        )
    }
}

ShareViewModel

class ShareViewModel(
    val stateHandle: SavedStateHandle
) : ViewModel(), KoinComponent {
 val sharedResp: MutableLiveData<Resp?> = stateHandle.getLiveData(KEY_RESP, null)

   fun getSharedResp(): Resp? {
        return sharedResp.value
    }

   fun updateResp(resp: Resp) {
        sharedResp.value = resp
    }
}

MainActivity

class MainActivity : BaseActivity(R.layout.activity_main) {
    private val shareViewModel: ShareViewModel by viewModel()
}

HomeFragment

class HomeFragment : BaseFragment<FragmentHomeBinding>() {

    private val shareViewModel: ShareViewModel by activityViewModel()
    private val viewModel by viewModel<HomeViewModel> {
        parametersOf(shareViewModel)
    }
}

HomeViewModel

class HomeViewModel(
    private val shareViewModel: ShareViewModel,
) 

复现步骤

  • 开启手机“不保留活动”选项并运行应用
  • 将应用切换至后台
  • 重新启动应用
  • SavedStateHandle取值为null,重复该循环约3次后值恢复

使用的依赖版本

  • koin-core:3.4.3
  • lifecycle-viewmodel-savedstate:2.5.1

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 11:04:56