作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在尝试观察我的workers
,但他们总是处于queued
状态,或者有时处于RUNNING
但从未SUCCEED
或 FAILED
。
workStatus.state
是 doWork()
返回的还是不同的?
这是我的工作脚本:
package com.mockie.daikokuten.sync.workers
import androidx.work.Worker
class TestWorker:Worker()
{
override fun doWork():Worker.Result
{
return Worker.Result.SUCCESS
}
}
这是观察 worker 的脚本:
val test = PeriodicWorkRequest.Builder(
TestWorker::class.java,
PeriodicWorkRequest.MIN_PERIODIC_INTERVAL_MILLIS,
TimeUnit.MILLISECONDS)
.addTag("test_worker")
.build()
WorkManager.getInstance()?.enqueueUniquePeriodicWork("test_worker", ExistingPeriodicWorkPolicy.KEEP, test)
WorkManager.getInstance()!!.getStatusesByTag("test_worker")
.observe(this, Observer { workStatus ->
if (workStatus != null)
{
for(ws in workStatus)
{
Log.d(":dump2 id ", ws.id.toString())
Log.d(":dump2 tag", ws.tags.toString())
Log.d(":dump2 state", ws.state.toString())
}
}
})
这是 Logcat 中的结果:
07-23 17:12:30.901 29740-29740/com.mockie.daikokuten D/:dump2 id: 5c6297f7-11d8-4f2f-a327-773672a7435c
07-23 17:12:30.901 29740-29740/com.mockie.daikokuten D/:dump2 tag: [test_worker, com.mockie.daikokuten.sync.workers.TestWorker]
07-23 17:12:30.901 29740-29740/com.mockie.daikokuten D/:dump2 state: ENQUEUED
最佳答案
对于您的定期工作请求,您应该看到
ENQUEUED - RUNNING - ENQUEUED
其中后面的ENQUEUED是下一个工作请求的状态。
您可能会在 RUNNING 和 ENQUEUED 之间非常短暂地看到 SUCCEEDED,但我从未见过。
对于您看到的一次性工作请求
ENQUEUED - RUNNING - SUCCEEDED
或者您在 doWork() 中返回的任何内容。
(安卓 8.1 API 27、1.0.0-alpha04)
关于android - workstatus 观察者始终处于排队状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51476480/
我正在尝试观察我的workers,但他们总是处于queued 状态,或者有时处于RUNNING 但从未SUCCEED 或 FAILED。 workStatus.state 是 doWork() 返回的
我是一名优秀的程序员,十分优秀!