Dagger 2和ViewModel自定义范围

时间:2018-11-30 19:03:49

标签: android mvvm viewmodel dagger-2

当前在我的Android MVVM项目中,我具有三个Dagger范围:

  • 单人
  • 活动范围
  • 片段范围

它们在对象生命周期管理方面非常有用。但是,有一种情况我无法解决:

在Dagger 2中实现视图模型范围在技术上是否可行?(当然是来自拱形组件的视图模型)。

让我们以这种情况为例:我希望能够将某个类的相同实例注入视图模型和片段(该视图模型的宿主)。该实例必须一直存在,只要视图模型有效,因此,如果我旋转屏幕并重新创建片段,它将注入相同的实例。

现在我所能想到的就是在Singleton范围内拥有该实例,但这不好,因为一旦视图模型被破坏,我必须进行一些手动状态管理以清除该实例的状态。

2 个答案:

答案 0 :(得分:0)

您可以像这样为视图模型创建注释类

465656

我已经在该存储库中编写了如何将视图模型注入活动https://github.com/ibrahimsn98/android-mvvm-dagger-2-rxjava-example

答案 1 :(得分:0)

这很有可能!

创建一个自定义注释,用自定义注释对ViewModel和所述类进行注释。反过来,您必须注释(子)组件,该组件也将向ViewModel提供此自定义注释。

但是,ViewModel的生命周期将与(子)组件绑定。