Hilt 实例化的 defaultDispatche 在哪里?

Where is the defaultDispatche instanced by Hilt?

代码A来自官方样本的末尾分支project

项目使用Hilt实现依赖注入。

我搜索了整个项目,只找到代码annotation class DefaultDispatcher,但我不明白代码的意思。

Hilt 实例化的 defaultDispatche 在哪里?

代码A

@HiltViewModel
class MainViewModel @Inject constructor(
    private val destinationsRepository: DestinationsRepository,
    @DefaultDispatcher private val defaultDispatcher: CoroutineDispatcher
) : ViewModel() {
   ...
}



@OptIn(ExperimentalMaterialApi::class)
@Composable
fun CraneHomeContent(
    onExploreItemClicked: OnExploreItemClicked,
    openDrawer: () -> Unit,
    modifier: Modifier = Modifier,
    viewModel: MainViewModel = viewModel(),
) {
   ...
}


@Retention(AnnotationRetention.BINARY)
@Qualifier
annotation class DefaultDispatcher

你应该有一个像这样声明的模块

@Module
object DispatcherModule {
    @DefaultDispatcher
    @Provides
    fun providesDefaultDispatcher(): CoroutineDispatcher = Dispatchers.Default
   
}

现在创建这个 class 以便将 @DefaultDispatcher 用作注释

@Retention(AnnotationRetention.BINARY)
@Qualifier
annotation class DefaultDispatcher

更多详情,请访问here

在你的示例项目here中,你分享的就是这样写的。

这意味着 @DefaultDispatcher 将用作注释,其中值将由 DispatcherModule

提供