- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试将一些网络调用迁移到 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
最佳答案
从您的工作请求中删除 .setExpedited(OutOfQuotaPolicy.DROP_WORK_REQUEST) 。
val workRequest = OneTimeWorkRequestBuilder<...>()
.addTag(...)
。 build ()
就那样做吧,这对我有用
关于android - CoroutineWorker 在没有 getForegroundInfo 的情况下崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71389874/
我正在使用 CoroutineWorker用于后台任务。这是代码 fragment class SimpleWorker(context: Context) : CoroutineWorker(con
我正在尝试实现 CoroutineWorker 以在 Android 应用程序中执行一些后台工作。我正在使用的第三方库使用回调,如 onConnected、onChanged 等。如何在 Corout
我正在尝试将一些网络调用迁移到 WorkManager CoroutineWorkers,以利用故障自动重试和调度功能。 这是我写的 worker : @HiltWorker class Refres
我正在尝试使用 dagger hilt 注入(inject)协程 worker ,我已按照文档中的所有说明进行操作 https://developer.android.com/training/dep
我使用WorkManager版本 2.2.0 用于在用户再次上线时启动协程 API 调用。 In the example by Google ,如果我想将 CoroutineWorker 的线程从默认
我当前的 android 应用程序使用链式 worker 来执行复杂的后台任务。 我只观察链中的最后一个 worker 来检测整个链是否成功完成。到目前为止,这种方法一直是可以接受的,因为我有一个新要
有人问了同样的问题,但它们对我不起作用,一开始我使用的是最新版本的工作管理器,它是 2.7 alpha 3,但我降级了,因为它只兼容 android 12 preview sdk,错误仍然存在!
我升级到 WorkManager 2.1.0 并尝试使用一些 Kotlin 扩展,包括 CoroutineWorker .我的 worker 正在延长 androidx.work.Worker以前,它
我是一名优秀的程序员,十分优秀!