Hilt DI 的问题

Problems with Hilt DI

抱歉这个问题,我以前从来没有用过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()
    }
}

有很多关于这个主题的课程和教程,但大多数只是改写原始文档。我强烈建议您阅读官方 Android 网站上的这份文档 https://developer.android.com/training/dependency-injection/hilt-android

Hilt 附带三个预制组件:

ApplicationComponent | SingletonComponent - 包含应用程序级依赖项并在应用程序运行前一直存在的组件。

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

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

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