我在我的 App 类中启动了一个 worker ,如下所示;
@HiltAndroidApp
class KutuphanemApplication:Application(),Configuration.Provider {
@Inject
lateinit var workerFactory: HiltWorkerFactory
override fun getWorkManagerConfiguration() =
Configuration.Builder()
.setMinimumLoggingLevel(android.util.Log.DEBUG)
.setWorkerFactory(workerFactory)
.build()
我想将一个单例 dao 注入(inject)我的 worker 类以更新数据库中的某些内容。所以我像下面这样注入(inject) dao; @HiltWorker
class ClearImageNotInArchiveWorker @AssistedInject constructor(
@Assisted val appContext: Context,
@Assisted val workerParams: WorkerParameters,
private val kitapDao: KitapDao): CoroutineWorker(appContext, workerParams) {
override suspend fun doWork(): Result {...}
}
当我在 App 类中加入这个 WorkManager 类时,我得到了WorkerFactory:无法实例化 com.mesutemre.kutuphanem.job.ClearImageNotInArchiveWorker
错误。但应用程序没有崩溃。在这里注入(inject)dao有什么问题吗?
也是我的单例道;
@Singleton
@Provides
fun provideKitapDao(database: KutuphanemDatabase) = database.getKitapDao();
最佳答案
我解决了这个问题。我搞砸了 hilt-compiler kapts。我已经添加了
kapt("androidx.hilt:hilt-compiler:1.0.0")
进入 gradle 然后我添加了<provider
android:name="androidx.startup.InitializationProvider"
android:authorities="${applicationId}.androidx-startup"
tools:node="remove">
</provider>
进入 AndroidManifest.xml 。然后问题就解决了。
关于android - 将 dao 注入(inject) Worker 的 Hilt 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70682091/