错误: 错误:[androidx.hilt.work.WorkerAssistedFactory.create(android.content.Context, androidx.work.WorkerParameters)] 工厂方法中的参数必须与 com.app.workmanagersample.ui.WorkManagerCall 中的 @Assisted 参数匹配。
代码:
@HiltAndroidApp
class WorkManagerApplication() : Application(), Configuration.Provider {
@Inject
lateinit var workerFactory: WorkManagerCallFactory
override val workManagerConfiguration: Configuration
get() = Configuration.Builder()
.setWorkerFactory(workerFactory)
.setMinimumLoggingLevel(android.util.Log.INFO)
.build()
}
class WorkManagerCallFactory @Inject constructor(private val api: Api) : WorkerFactory() {
override fun createWorker(
appContext: Context,
workerClassName: String,
workerParameters: WorkerParameters
): ListenableWorker = WorkManagerCall(api, appContext, workerParameters)
}
@HiltWorker
class WorkManagerCall @AssistedInject constructor(
@Assisted private val api: Api,
@Assisted context: Context,
@Assisted params: WorkerParameters
) : CoroutineWorker(context, params) {
override suspend fun doWork(): Result {
val userData = UserData("9901907999", 23, "", 39, 23, "")
return try {
api.registerUser(userData)
Log.d("WorkTest", "Success")
return Result.success()
} catch (e: HttpException) {
Log.d("WorkTest", "Failed")
Result.retry()
} catch (e: Exception) {
Log.d("WorkTest", "Failed")
Result.failure()
}
}
}
更新您的 WorkManagerCall 并从 api 参数中删除 assited 并尝试重建和项目并再次检查
@HiltWorker
class WorkManagerCall @AssistedInject constructor(
private val api: Api, // Regular injection, not assisted
@Assisted context: Context,
@Assisted params: WorkerParameters
) : CoroutineWorker(context, params) {
}