小编Nee*_*dla的帖子

Android 中什么时候调用 Viewmodel 的构造函数?

我正在浏览这个 Codelab: https: //developer.android.com/codelabs/android-lifecycles#6 它解释了如何在 ViewModel 中使用 SavedStateHandle 来避免进程死亡。ViewModel的构造函数如下:

    private SavedStateHandle mState;

    public SavedStateViewModel(SavedStateHandle savedStateHandle) {
       mState = savedStateHandle;
    }
Run Code Online (Sandbox Code Playgroud)

并且viewmodel在Activity中初始化如下:

    mSavedStateViewModel = new ViewModelProvider(this).get(SavedStateViewModel.class);
Run Code Online (Sandbox Code Playgroud)

ViewModel 的构造函数何时被调用?而Viewmodel是如何获取savedStateHandleViewModel的参数的呢?

编辑:

我通过这篇博文找到了问题的答案: https://www.rockandnull.com/viewmodel-savedstate/

它表示,如果 是SavedStateHandle视图模型构造函数中的唯一参数,则by viewModels委托会自动将其提供给视图模型。

然而,如果我们有依赖注入框架(Hilt)提供的自定义参数的组合,例如:存储库,还有一些其他运行时参数,例如:选定的类别 ID 和 SavedStateHandle 来帮助我们在视图模型的构造函数中避免进程死亡- 我们如何向工厂提供所有这些参数?

请发布一个小例子以供我的理解

android viewmodel android-lifecycle

0
推荐指数
1
解决办法
612
查看次数

标签 统计

android ×1

android-lifecycle ×1

viewmodel ×1