首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >匕首2& ViewModel自定义范围

匕首2& ViewModel自定义范围
EN

Stack Overflow用户
提问于 2018-11-30 19:03:49
回答 2查看 2K关注 0票数 3

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

  • 辛格尔顿
  • 活动范围
  • 碎片范围

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

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

让我们以这个场景为例:我希望能够向视图模型和片段(该视图模型的宿主)注入同一个类的实例。只要视图模型存在,这个实例就必须存在,所以如果我旋转屏幕并重新创建片段,它将被注入相同的实例。

现在,我所能想到的就是在Singleton作用域中拥有这个实例,但这并不好,因为一旦视图模型被销毁,我就必须做一些手动状态管理来清除这个实例的状态。

EN

回答 2

Stack Overflow用户

发布于 2018-12-04 16:32:24

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

代码语言:javascript
复制
@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中。

票数 0
EN

Stack Overflow用户

发布于 2020-03-01 11:08:05

这是非常可能的!

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

但是,ViewModel的生存期将绑定到(子)组件。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53563395

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档