【问题标题】:Problems with Hilt DIHilt DI 的问题
【发布时间】:2020-12-20 10:18:04
【问题描述】:

抱歉,我之前从未使用过 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 kotlin dependency-injection dagger-hilt


    【解决方案1】:

    Hilt 带有三个预制组件:

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

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

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-04-14
        • 1970-01-01
        • 1970-01-01
        • 2016-08-07
        • 1970-01-01
        • 1970-01-01
        • 2022-11-24
        相关资源
        最近更新 更多