工作状态观察者始终处于排队状态 [英] workstatus observer always in enqueued state

查看:26
本文介绍了工作状态观察者始终处于排队状态的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图观察我的 workers 但他们总是处于 queued 状态或者有时它是 RUNNING 但从来没有 SUCCEEDFAILED.

I am trying to observe my workers but they are always in queued state or sometime it's RUNNING but never SUCCEED or FAILED.

workStatus.state 来自 doWork() 的返回还是不同?

is workStatus.state from return in doWork() or it's different?

这是我的工作脚本:

package com.mockie.daikokuten.sync.workers

import androidx.work.Worker


class TestWorker:Worker()
{

override fun doWork():Worker.Result
{
    return Worker.Result.SUCCESS
}

}

这是观察工人的脚本:

 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中的结果:

this is the result in 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

推荐答案

对于您的定期工作请求,您应该看到

For your periodic work request you should see

ENQUEUED - RUNNING - ENQUEUED

其中后一个 ENQUEUED 是下一个工作请求的状态.

where the latter ENQUEUED is the state of the next work request.

您可能会在 RUNNING 和 ENQUEUED 之间短暂地获得 SUCCEEDED,但我从未见过这种情况.

You might get very briefly a SUCCEEDED between RUNNING and ENQUEUED, but I have never seen that.

您看到的一次性工作请求

For a onetime work request you see

ENQUEUED - RUNNING - SUCCEEDED

或者你在 doWork() 中返回的任何东西.

or whatever you return in doWork().

(Android 8.1 API 27,1.0.0-alpha04)

(Android 8.1 API 27, 1.0.0-alpha04)

这篇关于工作状态观察者始终处于排队状态的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆