androidx.work.impl.workers.ConstraintTrackingWorker :无法将com.mpower.android.lpincrm.workers.DaggerWorkerFactory.createWorker(DaggerWorkerFactory.kt:38) at androidx.work.WorkerFactory.createWorkerWithDefaultFallback(WorkerFactory.java:83) at androidx.work.impl.WorkerWrapper.runWorker(WorkerWrapper.java:242) at androidx.work.impl.WorkerWrapper的java.lang.Class.asSubclass(Class.java:1486)转换为androidx.work.impl.WorkerWrapperandroidx.work.impl.utils.SerialExecutor$Task.run(SerialExecutor.java:91) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588) at java.lang.Thread.run(Thread.java:818)的.run(WorkerWrapper.java:136)
createWorker()
的第一行出错:
override fun createWorker(appContext: Context, workerClassName: String, workerParameters: WorkerParameters): ListenableWorker? {
val workerclass = Class.forName(workerClassName).asSubclass(Worker::class.java)
val constructor = workerclass.getDeclaredConstructor(Context::class.java, WorkerParameters::class.java)
val instance = constructor.newInstance(appContext, workerParameters)
when (instance) {
is MetaWorker -> {
instance.treatmentMetaRepository = foo
instance.newsRepository = foo1
instance.geoDataRepository = foo2
instance.medicineMetaRepository = foo3
instance.preferenceUtil = preferenceUtil
}
is NotificationSchedulerWorker -> {
instance.notificationRepository = notification
}
is SyncWorker -> {
instance.syncAPIs = syncAPI
instance.registrationAPI = registrationAPI
instance.preferenceUtil = preferenceUtil
instance.treatmentRepository = treatmentRepository
instance.medicineRepository = medicineRepository
instance.medicineDetailsRepository = medicineDetailsRepository
instance.collectionRepository = collectionRepository
instance.newVisitRepository = newVisitRepository
instance.dueReceiptRepository = dueReceiptRepository
instance.transportationRepository = transportationRepository
}
}
return instance
}
我的worker版本:
def work_version = "2.3.4"
implementation "androidx.work:work-runtime:$work_version"
发布于 2020-05-14 18:10:49
您的WorkerFactory
错误地假设应用程序创建的每个ListenableWorker
子类也是一个Worker
子类。事实证明,WorkManager
库包含此规则的一些例外,这些例外用作内部实现细节。
修复方法是将传递的工作者类视为ListenableWorker
的子类,而不是Worker
的子类。
val workerclass = Class.forName(workerClassName).asSubclass(ListenableWorker::class.java)
https://stackoverflow.com/questions/61792470
复制