我当前的Android应用程序使用的是>]
archWorkerRuntimeVersion = '2.3.0-beta02' api "androidx.work:work-runtime:$archWorkerRuntimeVersion" api "androidx.work:work-runtime-ktx:$archWorkerRuntimeVersion"
我将以OneTimeRequests的身份开始工作,如下所示:-
val initialWorkerRequest = OneTimeWorkRequest.Builder(InitialWorker::class.java).addTag(NUMERIC_WORK_IN_PROGRESS_TAG + "${System.nanoTime()}").build() val taskOneWorkerRequest = OneTimeWorkRequest.Builder(TaskOneWorker::class.java).addTag(NUMERIC_WORK_IN_PROGRESS_TAG + "${System.nanoTime()}").build() val taskTwoWorkerRequest = OneTimeWorkRequest.Builder(TaskTwoWorker::class.java).addTag(NUMERIC_WORK_IN_PROGRESS_TAG + "${System.nanoTime()}").build() val taskThreeWorkerRequest = OneTimeWorkRequest.Builder(TaskThreeWorker::class.java).addTag(NUMERIC_WORK_IN_PROGRESS_TAG + "${System.nanoTime()}").build() val taskFourWorkerRequest = OneTimeWorkRequest.Builder(TaskFourWorker::class.java).addTag(NUMERIC_WORK_IN_PROGRESS_TAG + "${System.nanoTime()}").build() val finalWorkerRequest = OneTimeWorkRequest.Builder(FinalWorker::class.java).addTag(NUMERIC_WORK_IN_PROGRESS_TAG + "${System.nanoTime()}").build() WorkManager.getInstance(applicationContext) .beginUniqueWork(NUMERIC_UNIQUE_WORK_NAME, ExistingWorkPolicy.KEEP, initialWorkerRequest) .then(listOf(taskOneWorkerRequest, taskTwoWorkerRequest)) .then(taskThreeWorkerRequest) .then(taskFourWorkerRequest) .then(finalWorkerRequest) .enqueue()
我的用户可以尝试多次启动这项工作,但是当我将
beginUniqueWork
与ExistingWorkPolicy.KEEP
结合使用时,仅启动了一项工作实例。
我通过LiveData观察工人的ID,如下所示:
WorkManager.getInstance(applicationContext).getWorkInfoByIdLiveData(initialWorkerRequest.id).apply { observeForever { workInfo -> if (workInfo != null && workInfo.state == WorkInfo.State.ENQUEUED) { ... } } }
这种方法每次我的用户尝试开始工作时都会添加一个观察者,即使实际上没有开始任何工作,也是如此
1). Is this an issue?
2). Is there any way I can detect when using `beginUniqueWork` with `ExistingWorkPolicy.KEEP` does not result in work being started?
我当前的Android应用程序使用archWorkerRuntimeVersion ='2.3.0-beta02'api“ androidx.work:work-runtime:$archWorkerRuntimeVersion” api“ androidx.work:work-runtime-ktx:$ ...
假设我有如下所示的demo()方法,而UploadWorker除了等待10秒外什么也不做: