gpt4 book ai didi

android - Hilt - CoroutineDispatcher 上缺少绑定(bind)

转载 作者:行者123 更新时间:2023-12-05 00:19:11 27 4
gpt4 key购买 nike

我正在使用 重构我的应用程序刀柄 作为依赖注入(inject)管理器。
我有一个构造函数可注入(inject)类,构造函数中有两个参数。其中一个参数是 CoroutineDispatcher .

class SubscriptionsLocalDataSource @Inject constructor(
private val subscriptionsDao: SubscriptionsDao,
private val dispatcher: CoroutineDispatcher = Dispatchers.IO
) : SubscriptionsDataSource {

}
当我尝试构建应用程序时,出现缺少绑定(bind)错误,如下所示:

error: [Dagger/MissingBinding] kotlinx.coroutines.CoroutineDispatcher cannot be provided without an @Provides-annotated method.public abstract static class ApplicationC implements ApplicationComponent,^kotlinx.coroutines.CoroutineDispatcher is injected atcom.anagramma.babacodashboard.data.subscriptions.local.SubscriptionsLocalDataSource(…, dispatcher)com.anagramma.babacodashboard.data.subscriptions.local.SubscriptionsLocalDataSource is injected atcom.anagramma.babacodashboard.data.subscriptions.SubscriptionsRepositoryImpl(localDataSource, …)com.anagramma.babacodashboard.data.subscriptions.SubscriptionsRepositoryImpl is injected atcom.anagramma.babacodashboard.di.SubscriptionsModule.bindSubscriptionsRepository(subscriptionsRepositoryImpl)javax.inject.Provider<com.anagramma.babacodashboard.data.subscriptions.SubscriptionsRepository> is injected atcom.anagramma.babacodashboard.ui.orders.subscriptions.SubscriptionsViewModel_AssistedFactory(repository, …)com.anagramma.babacodashboard.ui.orders.subscriptions.SubscriptionsViewModel_AssistedFactory is injected atcom.anagramma.babacodashboard.ui.orders.subscriptions.SubscriptionsViewModel_HiltModule.bind(factory)java.util.Map<java.lang.String,javax.inject.Provider<androidx.hilt.lifecycle.ViewModelAssistedFactory<? extends androidx.lifecycle.ViewModel>>> is injected atandroidx.hilt.lifecycle.ViewModelFactoryModules.ActivityModule.provideFactory(…, viewModelFactories)@dagger.hilt.android.internal.lifecycle.DefaultActivityViewModelFactory java.util.Set<androidx.lifecycle.ViewModelProvider.Factory> is requested atdagger.hilt.android.internal.lifecycle.DefaultViewModelFactories.ActivityEntryPoint.getActivityViewModelFactory() [com.anagramma.babacodashboard.BabacoDashboardApplication_HiltComponents.ApplicationC → com.anagramma.babacodashboard.BabacoDashboardApplication_HiltComponents.ActivityRetainedC → com.anagramma.babacodashboard.BabacoDashboardApplication_HiltComponents.ActivityC]The following other entry points also depend on it:dagger.hilt.android.internal.lifecycle.DefaultViewModelFactories.FragmentEntryPoint.getFragmentViewModelFactory() [com.anagramma.babacodashboard.BabacoDashboardApplication_HiltComponents.ApplicationC → com.anagramma.babacodashboard.BabacoDashboardApplication_HiltComponents.ActivityRetainedC → com.anagramma.babacodashboard.BabacoDashboardApplication_HiltComponents.ActivityC → com.anagramma.babacodashboard.BabacoDashboardApplication_HiltComponents.FragmentC]


我错过了 CoroutineDispatcher 上的一些注释吗?

最佳答案

不知道这是否是最好的方法,但我只是通过创建 DispatcherModule 来解决关注 this guide

@Module
@InstallIn(ApplicationComponent::class)
object DispatcherModule {
@IoDispatcher
@Provides
fun providesIoDispatcher(): CoroutineDispatcher = Dispatchers.IO
}

@Retention(AnnotationRetention.BINARY)
@Qualifier
annotation class IoDispatcher
然后我重构了我的原始类以使用 IoDispatcher 注释:
class SubscriptionsLocalDataSource @Inject constructor(
private val subscriptionsDao: SubscriptionsDao,
@IoDispatcher private val dispatcher: CoroutineDispatcher
) : SubscriptionsDataSource {


}

关于android - Hilt - CoroutineDispatcher 上缺少绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63847790/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com