【发布时间】:2021-11-24 03:13:47
【问题描述】:
我正在浏览这个代码实验室:https://developer.android.com/codelabs/android-lifecycles#6 它解释了如何在 ViewModel 中使用 SavedStateHandle 来避免进程死亡。 ViewModel 的构造函数如下:
private SavedStateHandle mState;
public SavedStateViewModel(SavedStateHandle savedStateHandle) {
mState = savedStateHandle;
}
并且viewmodel在Activity中初始化如下:
mSavedStateViewModel = new ViewModelProvider(this).get(SavedStateViewModel.class);
什么时候调用 ViewModel 的构造函数?而Viewmodel如何获取ViewModel的savedStateHandle参数呢?
编辑:
我通过这篇博文找到了我的问题的答案: https://www.rockandnull.com/viewmodel-savedstate/
它表示如果SavedStateHandle 是我们视图模型构造函数中的唯一参数,by viewModels 委托会自动将其提供给视图模型。
然而, 如果我们有依赖注入框架(Hilt)提供的自定义参数的组合,例如:存储库,几个其他运行时参数,例如:选择的类别 ID 和 SavedStateHandle,以帮助我们在视图模型的构造函数中幸免于进程死亡 - 如何我们可以将所有这些参数提供给工厂吗?
请贴一个小例子让我理解
【问题讨论】:
标签: android viewmodel android-lifecycle