目前,在我的Android项目中,我有三个Dagger范围:
它们在对象生命周期管理方面非常有用。然而,有一种情况我无法解决:
技术上是否有可能在Dagger 2中实现视图模型范围?(当然是来自arch组件的视图模型)。
让我们以这个场景为例:我希望能够向视图模型和片段(该视图模型的宿主)注入同一个类的实例。只要视图模型存在,这个实例就必须存在,所以如果我旋转屏幕并重新创建片段,它将被注入相同的实例。
现在,我所能想到的就是在Singleton作用域中拥有这个实例,但这并不好,因为一旦视图模型被销毁,我就必须做一些手动状态管理来清除这个实例的状态。
发布于 2018-12-04 16:32:24
您可以为这样的视图模型创建注释类
@Documented
@MapKey
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface ViewModelKey {
Class<? extends ViewModel> value();
}我已经在存储库中编写了如何将视图模型注入活动https://github.com/ibrahimsn98/android-mvvm-dagger-2-rxjava-example中。
发布于 2020-03-01 11:08:05
这是非常可能的!
创建一个自定义注释,用自定义注释对ViewModel和上述类进行注释。反过来,您必须对(子)组件进行注释,该组件还将为ViewModel提供此自定义注释。
但是,ViewModel的生存期将绑定到(子)组件。
https://stackoverflow.com/questions/53563395
复制相似问题