0

很抱歉这个问题,我以前从未使用过 Dagger/Hilt。无法理解如何在我的应用程序中注入依赖项。这是现在拥有的:

@InstallIn(Application::class)
@Module
abstract class RepositoryModule {
    @Binds
    abstract fun bindProductRepository(productRepository: ProductRepository): IProductRepository

    @Binds
    abstract fun bindCategoryStorage(categoryStorage: CategoryStorageImpl) : CategoryStorage

    companion object {
        @Provides
        @Singleton
        fun createRoomDataBase(@ApplicationContext context: Context) : ProductRoomDatabase = ProductRoomDatabase.getDatabase(context)

        @Provides
        @Singleton
        fun createProductDao(productRoomDatabase: ProductRoomDatabase) = productRoomDatabase.productDao()

        @Provides
        @Singleton
        fun createCategoryDao(productRoomDatabase: ProductRoomDatabase) = productRoomDatabase.categoryDao()
    }
}
4

2 回答 2

0

有很多关于这个主题的课程和教程,但其中大部分只是对原始文档的重新表述。我强烈建议您阅读此文档,来自 Android 官方网站 https://developer.android.com/training/dependency-injection/hilt-android

于 2020-12-20T10:26:50.727 回答
0

Hilt 带有三个预制组件:

ApplicationComponent | SingletonComponent- 包含应用程序级依赖关系并一直存在到应用程序存在的组件。

ActivityComponent- 包含Activity级别依赖项的组件

FragmentComponent- 包含Fragment级别依赖的组件

InstallIn注释表明当前模块中的所有依赖项都将在注释的参数中可用。

于 2020-12-20T11:06:15.883 回答