gpt4 book ai didi

android - Dagger 2 和 ViewModel 自定义范围

转载 作者:行者123 更新时间:2023-11-30 05:12:01 25 4
gpt4 key购买 nike

目前在我的 Android MVVM 项目中,我有三个 Dagger 作用域:

  • 单例
  • Activity 范围
  • fragment 范围

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

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

让我们以这种情况为例:我希望能够将某个类的相同实例注入(inject) View 模型和 fragment (它是该 View 模型的宿主)。只要 View 模型存在,这个实例就必须存在,所以如果我旋转屏幕并重新创建 fragment ,它将注入(inject)相同的实例。

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

最佳答案

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

@Documented
@MapKey
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface ViewModelKey {

Class<? extends ViewModel> value();
}

我已经在该存储库中编写了如何将 View 模型注入(inject) Activity https://github.com/ibrahimsn98/android-mvvm-dagger-2-rxjava-example

关于android - Dagger 2 和 ViewModel 自定义范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53563395/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com