gpt4 book ai didi

android - CoroutineWorker 在没有 getForegroundInfo 的情况下崩溃

转载 作者:行者123 更新时间:2023-12-04 23:42:53 54 4
gpt4 key购买 nike

我正在尝试将一些网络调用迁移到 WorkManager CoroutineWorkers,以利用故障自动重试和调度功能。
这是我写的 worker :

@HiltWorker
class RefreshSubscriptionDetailsWorker
@AssistedInject constructor(
@Assisted appContext: Context,
@Assisted workerParams: WorkerParameters
) :
CoroutineWorker(appContext, workerParams) {

override suspend fun doWork(): Result {
return Result.success()
}
}
BaseApplication 中配置请求的代码:
        val refreshSubscriptionDetailsRequest =
OneTimeWorkRequestBuilder<RefreshSubscriptionDetailsWorker>()
.build()

WorkManager
.getInstance(applicationContext)
.enqueue(refreshSubscriptionDetailsRequest)
我已按照文档中的说明确保正确注入(inject) Hilt:
<provider
android:name="androidx.startup.InitializationProvider"
android:authorities="${applicationId}.androidx-startup"
tools:node="remove">
</provider>
    @Inject lateinit var workerFactory: HiltWorkerFactory

override fun getWorkManagerConfiguration() =
Configuration.Builder()
.setWorkerFactory(workerFactory)
.build()
我遇到的问题是,当它排队时,它会崩溃,但出现以下异常:
Fatal Exception: java.lang.IllegalStateException: Not implemented
at androidx.work.CoroutineWorker.getForegroundInfo$suspendImpl(CoroutineWorker.kt:100)
at androidx.work.CoroutineWorker.getForegroundInfo()
at androidx.work.CoroutineWorker$getForegroundInfoAsync$1.invokeSuspend(CoroutineWorker.kt:134)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:571)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:750)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:678)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:665)
如果我要使用加急请求,我希望我需要实现 getForegroundInfo 函数,但在这种情况下我不需要,因为我不要求加急请求,或者我已经由于教程中缺少 getForegroundInfo 实现,以及表明您需要 ForegroundService 来处理 Expedited 请求的补丁说明: Patch notes
我正在使用 WorkManager 2.7.1,Hilt 2.41,试图在 Android 版本 8 到 12 上运行它。

最佳答案

从您的工作请求中删除 .setExpedited(OutOfQuotaPolicy.DROP_WORK_REQUEST) 。
val workRequest = OneTimeWorkRequestBuilder<...>()
.addTag(...)
。 build ()
就那样做吧,这对我有用

关于android - CoroutineWorker 在没有 getForegroundInfo 的情况下崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71389874/

54 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com