WorkManagerApplication 中的 Hilt 集成问题

问题描述 投票:0回答:1

错误: 错误:[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()
            }
        }
    }
android kotlin dagger-hilt android-workmanager workmanagers
1个回答
0
投票

更新您的 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) {
 
}
© www.soinside.com 2019 - 2024. All rights reserved.