我正在使用WorkManager
1.0.1。版。
我正在使用以下代码创建WorkRequest
:
Constraints constraints = new Constraints.Builder().setRequiredNetworkType(NetworkType.CONNECTED).build();
Data data = new Data.Builder()
.putString(URL_KEY, url)
.putString(DATA_KEY, data)
.build();
OneTimeWorkRequest sendWork = new OneTimeWorkRequest.Builder(SendWorker.class)
.setConstraints(constraints)
.setInputData(data)
.addTag(SEND_WORK_TAG)
.setBackoffCriteria(
BackoffPolicy.EXPONENTIAL,
30,
TimeUnit.SECONDS)
.build();
当我打电话给WorkManager.getInstance().enqueue(sendWork)
时,工作已经很好地执行了,但是我想确保执行是串行的,所以我尝试使用
WorkManager.getInstance().enqueueUniqueWork(SENDING_WORK_NAME, ExistingWorkPolicy.APPEND, sendWork);
,或者,如建议的here,
WorkManager.getInstance().beginUniqueWork(SENDING_WORK_NAME, ExistingWorkPolicy.APPEND, sendWork).enqueue();
,但工作尚未执行。为什么?
P.S。还尝试添加零或非常小的setInitialDelay
,但这没有帮助。