小编Moh*_*ALI的帖子

Hilt 和 WorkManager 错误:lateinit 属性 WorkerFactory 尚未初始化

我正在尝试将 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)

最后,我处理文档中的这条注释: …

android kotlin android-workmanager dagger-hilt

5
推荐指数
1
解决办法
2238
查看次数