Dagger 2使用子组件绑定委托

时间:2017-10-11 13:15:33

标签: android mvvm dependency-injection dagger-2

我在设计我的应用程序的DI架构时遇到了一些问题。我正在使用Architecture Components ViewModels,我很自豪如何通过Dagger在他们自己的GitHub repository中提供ViewModels。我想创建范围的组件/模块,例如产品细节,它将提供ViewModels / Repositories和其他依赖的东西在单个产品上..问题是所有ViewModel都是从与给定示例中相同的ViewModelModule提供的。但是ProductViewModel需要从作用域子组件ProductModule提供的ProductRepository。显然这是不可能的,因为Dagger在构建时抛出错误,我需要使用@Provides注释提供ProductRepository。

好的,所以我认为我会在ProductModule中提供ProductViewModel,但之后它会在运行时崩溃,因为在method

中找不到我的ViewModel的提供者

是否有可能拥有这种架构,或者我是否需要重新设计它以便在样本中不使用与Google相同的方法?

1 个答案:

答案 0 :(得分:2)

通过删除@Singleton子类上的ViewModelProvider.Factory注释,我能够解决类似的问题。

工厂是否是单身并不重要;这真的只是一个性能问题。我最终使用了@Reusable,它告诉Dagger如果需要可以安全地重用工厂实例,但不受特定范围的限制。