Che*_*eng 6 android android-workmanager
目前,我正在使用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"
Run Code Online (Sandbox Code Playgroud)
当应用程序退出时,使用以下代码执行后台工作程序没有问题.
OneTimeWorkRequest oneTimeWorkRequest =
new OneTimeWorkRequest.Builder(SyncWorker.class)
.addTag(SyncWorker.TAG)
.build();
WorkManager workManager = WorkManager.getInstance();
workManager.enqueue(oneTimeWorkRequest);
Run Code Online (Sandbox Code Playgroud)
因为,我想避免SyncWorker同时运行多个.我试着用
OneTimeWorkRequest oneTimeWorkRequest =
new OneTimeWorkRequest.Builder(SyncWorker.class)
.addTag(SyncWorker.TAG)
.build();
WorkManager workManager = WorkManager.getInstance();
workManager.beginUniqueWork(
SyncWorker.TAG,
ExistingWorkPolicy.REPLACE,
oneTimeWorkRequest
);
Run Code Online (Sandbox Code Playgroud)
SyncWorker 根本没有运行.
我可以知道我错过了哪一步吗?谢谢.
ian*_*ake 18
beginUniqueWork()返回一个WorkContinuation对象.您需要调用enqueue它WorkContinuation来实际使用WorkManager 将其排队:
workManager.beginUniqueWork(
SyncWorker.TAG,
ExistingWorkPolicy.REPLACE,
oneTimeWorkRequest
).enqueue();
Run Code Online (Sandbox Code Playgroud)
drm*_*wer 12
@ianhanniballake 的答案当然有用且正确,但我想我会指出(使用快速发展的 API)有一种新enqueueUniqueWork()方法,所以我想 OP 现在可以使用:
workManager.enqueueUniqueWork(
SyncWorker.TAG,
ExistingWorkPolicy.REPLACE,
oneTimeWorkRequest
);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3534 次 |
| 最近记录: |