我有这样的代码,我需要实现任务队列,如果任务在队列中,那么你不需要添加它。\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)