小编Mhe*_*rsh的帖子

工人经理:不在队列中开始工作

我有这样的代码,我需要实现任务队列,如果任务在队列中,那么你不需要添加它。\n我实现如图所示,一切正常,但有时工作人员的状态保持ENQUEUED ,并且新的任务不会添加到队列中。\n也就是说,当没有互联网时,我添加一个任务,当互联网出现时,任务开始耗尽,但由于某些原因,有时不会\xe2\x80\ x99t 发生,我无法\xe2\x80\x99 理解为什么任务没有启动,尽管事实上有互联网并且任务在队列中。\n你如何确定为什么任务不会启动?\n有人知道吗?有更好的建议吗?

\n\n
//run task\nrunOneTimeWorkByType<GetDocumentsWorker>(GET_DOCUMENTS_TAG)\n\n     private inline fun <reified W : Worker> runOneTimeWorkByType(tag: String) {\n            val workerInfoList = workManager\n                .getWorkInfosByTag(tag)\n                .get()\n\n            for (item in workerInfoList) {\n                if (item.state == WorkInfo.State.ENQUEUED){\n                    return\n                }\n            }\n\n            val constraints = Constraints.Builder()\n                .setRequiredNetworkType(NetworkType.CONNECTED)\n                .build()\n\n            val workRequest =\n                OneTimeWorkRequestBuilder<W>()\n                    .setConstraints(constraints)\n                    .addTag(tag)\n                    .build()\n\n            workManager.enqueue(workRequest)\n        }\n\n\n        class GetDocumentsWorker(ctx: Context, workerParams: WorkerParameters) :\n            Worker(ctx, workerParams) {\n            @Inject\n            lateinit var serviceUtils: ServiceUtils\n\n            init {\n                App.appComponent.inject(this)\n            }\n\n            override fun doWork(): Result {\n                Log.d("workmng", "GetDocumentsWorker: start")\n                try {\n                    serviceUtils.documentsGet()\n …
Run Code Online (Sandbox Code Playgroud)

android kotlin android-workmanager

6
推荐指数
0
解决办法
2302
查看次数

标签 统计

android ×1

android-workmanager ×1

kotlin ×1