本文介绍了WorkManager beginUniqueWork无法按预期工作的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
当前,我正在使用WorkManager 1.0.0-alpha02.
Currently, I'm using WorkManager 1.0.0-alpha02.
def work_version = "1.0.0-alpha02"
implementation "android.arch.work:work-runtime:$work_version" // use -ktx for Kotlin
// optional - Firebase JobDispatcher support
implementation "android.arch.work:work-firebase:$work_version"
在应用程序退出时,使用以下代码执行后台工作程序没有问题.
I have no problem to execute background worker, by using the following code, when the app quit.
OneTimeWorkRequest oneTimeWorkRequest =
new OneTimeWorkRequest.Builder(SyncWorker.class)
.addTag(SyncWorker.TAG)
.build();
WorkManager workManager = WorkManager.getInstance();
workManager.enqueue(oneTimeWorkRequest);
自那时以来,我想避免同时运行多个 SyncWorker
.我尝试使用
OneTimeWorkRequest oneTimeWorkRequest =
new OneTimeWorkRequest.Builder(SyncWorker.class)
.addTag(SyncWorker.TAG)
.build();
WorkManager workManager = WorkManager.getInstance();
workManager.beginUniqueWork(
SyncWorker.TAG,
ExistingWorkPolicy.REPLACE,
oneTimeWorkRequest
);
SyncWorker
完全没有运行.
我可以知道我错过了哪一步吗?谢谢.
May I know what step I had missed out? Thank you.
推荐答案
beginUniqueWork()
返回 WorkContinuation
对象.您需要在该 WorkContinuation
上调用 enqueue
,以使用WorkManager对其进行实际排队:
beginUniqueWork()
returns a WorkContinuation
object. You need to call enqueue
on that WorkContinuation
to actually enqueue it with WorkManager:
workManager.beginUniqueWork(
SyncWorker.TAG,
ExistingWorkPolicy.REPLACE,
oneTimeWorkRequest
).enqueue();
这篇关于WorkManager beginUniqueWork无法按预期工作的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!