使用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.3lifecycle-viewmodel-savedstate:2.5.1
内容的提问来源于stack exchange,提问作者codingtired
相关产品推荐
相关产品推荐

