我在设计我的应用程序的DI架构时遇到了一些问题。我正在使用Architecture Components ViewModels,我很自豪如何通过Dagger在他们自己的GitHub repository中提供ViewModels。我想创建范围的组件/模块,例如产品细节,它将提供ViewModels / Repositories和其他依赖的东西在单个产品上..问题是所有ViewModel都是从与给定示例中相同的ViewModelModule提供的。但是ProductViewModel需要从作用域子组件ProductModule提供的ProductRepository。显然这是不可能的,因为Dagger在构建时抛出错误,我需要使用@Provides注释提供ProductRepository。
好的,所以我认为我会在ProductModule中提供ProductViewModel,但之后它会在运行时崩溃,因为在method
中找不到我的ViewModel的提供者是否有可能拥有这种架构,或者我是否需要重新设计它以便在样本中不使用与Google相同的方法?
答案 0 :(得分:2)
通过删除@Singleton
子类上的ViewModelProvider.Factory
注释,我能够解决类似的问题。
工厂是否是单身并不重要;这真的只是一个性能问题。我最终使用了@Reusable
,它告诉Dagger如果需要可以安全地重用工厂实例,但不受特定范围的限制。