【问题标题】:Dagger2 and ViewModels For Activity and FragmentDagger2 和 ViewModels 用于 Activity 和 Fragment
【发布时间】:2020-01-21 06:29:51
【问题描述】:

我正在学习使用 MVVM 架构的 Dagger2。我有一个问题,我正在阅读一些文件和观看视频。

我知道我们可以为单例模式和我们将在整个应用程序中使用的其他一些东西减少大量样板代码。

我正在开发一个用于学习目的的应用程序,我正在使用 MVVM 和 Dagger2。 我的问题是:对于注入视图模型提供程序,我们需要编写太多样板代码来注入视图模型提供程序,并且它仅适用于该活动生命周期。我们可以通过简单的代码来实现这一点。为什么要使用 Dagger2 实际用途是什么?我搜索了它,没有发现任何有用的东西。

这是我使用 dagger2 的代码:

@Inject
ViewModelProviderFactory providerFactory;

viewModel = ViewModelProviders.of(this,providerFactory).get(AuthViewModel.class);

要注入 ViewModelProviderFactory,我需要编写一些样板代码。

这是我没有 dagger2 的代码:

 mMainActivityViewModel = ViewModelProviders.of(this).get(MainActivityViewModel.class);

两者都达到了目的,但我没有得到最好的,为什么?

【问题讨论】:

    标签: android dagger-2 android-lifecycle android-mvvm


    【解决方案1】:

    您没有显示单个选项来初始化视图模型。每种方式都有优点和缺点。 当你想在一个activity或者一个fragment中引入带有inject构造函数的viewmodel时,我们有两个问题,首先,在通常的实现过程中,每次屏幕旋转都会重新创建模型,其次,默认情况下,ViewModelProviders不支持任何构造函数带参数。

    所以你需要创建自己的模型提供者,并在活动中实现它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-07-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-14
      相关资源
      最近更新 更多