我正在尝试将 WorkManager 与 Hilt 一起注入。首先我实现文档:
使用类中的 @HiltWorker 注释和 Worker 对象的构造函数中的 @AssistedInject 注入 Worker。您只能在 Worker 对象中使用 @Singleton 或无范围绑定。您还必须使用 @Assisted 注释 Context 和 WorkerParameters 依赖项:
@HiltWorker
class RetreiveQuestionWorkManager @AssistedInject constructor(
@Assisted val appContext : Context,
@Assisted val workerParameters: WorkerParameters,
val questionDao: QuestionDao,
val questionCacheMapper: QuestionCacheMapper)
: CoroutineWorker(appContext, workerParameters) {
...
}
Run Code Online (Sandbox Code Playgroud)
然后我从文档中应用了这个:
然后,让您的 Application 类实现 Configuration.Provider 接口,注入 HiltWorkFactory 的实例,并将其传递到 WorkManager 配置中,如下所示:
@HiltAndroidApp
class MyApp : Application(), Configuration.Provider {
@Inject lateinit var workerFactory: HiltWorkerFactory
override fun getWorkManagerConfiguration() =
Configuration.Builder()
.setWorkerFactory(workerFactory)
.build()
}
Run Code Online (Sandbox Code Playgroud)
最后,我处理文档中的这条注释: …