Kak*_*shi 3 android kotlin android-studio android-workmanager
我试图观察我的workers但他们总是处于queued状态或有时它'sRUNNING但从来没有SUCCEED或FAILED。
是workStatus.state来自 returndoWork()还是不同?
这是我的工作脚本:
\n\npackage com.mockie.daikokuten.sync.workers\n\nimport androidx.work.Worker\n\n\nclass TestWorker:Worker()\n{\n\noverride fun doWork():Worker.Result\n{\n return Worker.Result.SUCCESS\n}\n\n}\nRun Code Online (Sandbox Code Playgroud)\n\n这是观察工人的脚本:
\n\n val test = PeriodicWorkRequest.Builder(\n TestWorker::class.java,\n PeriodicWorkRequest.MIN_PERIODIC_INTERVAL_MILLIS,\n TimeUnit.MILLISECONDS)\n .addTag("test_worker")\n .build()\n\n WorkManager.getInstance()?.enqueueUniquePeriodicWork("test_worker", ExistingPeriodicWorkPolicy.KEEP, test)\n\n WorkManager.getInstance()!!.getStatusesByTag("test_worker")\n .observe(this, Observer { workStatus ->\n if (workStatus != null)\n {\n for(ws in workStatus)\n {\n Log.d(":dump2 id ", ws.id.toString())\n Log.d(":dump2 tag", ws.tags.toString())\n Log.d(":dump2 state", ws.state.toString())\n }\n }\n })\nRun Code Online (Sandbox Code Playgroud)\n\n这是 Logcat 中的结果:
\n\n 07-23 17:12:30.901 29740-29740/com.mockie.daikokuten D/:dump2\xc2\xa0id: 5c6297f7-11d8-4f2f-a327-773672a7435c\n 07-23 17:12:30.901 29740-29740/com.mockie.daikokuten D/:dump2\xc2\xa0tag: [test_worker, com.mockie.daikokuten.sync.workers.TestWorker]\n 07-23 17:12:30.901 29740-29740/com.mockie.daikokuten D/:dump2\xc2\xa0state: ENQUEUED\nRun Code Online (Sandbox Code Playgroud)\n
对于您的定期工作请求,您应该看到
ENQUEUED - RUNNING - ENQUEUED
Run Code Online (Sandbox Code Playgroud)
其中后者 ENQUEUED 是下一个工作请求的状态。
您可能会在 RUNNING 和 ENQUEUED 之间非常短暂地获得 SUCCEEDED,但我从未见过这种情况。
对于一次性工作请求,您会看到
ENQUEUED - RUNNING - SUCCEEDED
Run Code Online (Sandbox Code Playgroud)
或您在 doWork() 中返回的任何内容。
(Android 8.1 API 27、1.0.0-alpha04)
| 归档时间: |
|
| 查看次数: |
3649 次 |
| 最近记录: |