PPD*_*PPD 5 android android-jetpack android-workmanager
对于定期任务,我将工作管理器用作:
PeriodicWorkRequest.Builder wifiWorkBuilder =
new PeriodicWorkRequest.Builder(FileUpload.class, 15,
TimeUnit.MINUTES)
.setConstraints(new Constraints.Builder().setRequiredNetworkType(NetworkType.METERED).build());
PeriodicWorkRequest wifiWork = wifiWorkBuilder.build();
WorkManager.getInstance().enqueueUniquePeriodicWork("wifiJob", ExistingPeriodicWorkPolicy.REPLACE, wifiWork);
Run Code Online (Sandbox Code Playgroud)
我在该活动中有一个活动,如果用户取消选中该复选框,则会有一个复选框,然后我想停止此作业。所以我停止了工作:
WorkManager.getInstance().cancelAllWorkByTag("wifiJob");
Run Code Online (Sandbox Code Playgroud)
但是停止工作后,我的任务也正在执行。以前我以为下一个作业可能会被执行,此后它将停止,但是在过去的1小时中它执行了4次,而作业仍在后台运行。什么是停止工作的其他方法或正确方法。
根据文档:
使用给定的标签取消所有未完成的工作。请注意,取消是一项尽力而为的政策,已经执行的工作可能会继续运行。
这是什么意思-取消是一项尽力而为的政策,已经执行的工作可能会继续运行。那么阻止这种情况的正确方法是什么
我正在使用版本,implementation "android.arch.work:work-runtime:1.0.0-alpha08"
谢谢
PPD*_*PPD 11
在创建PeriodicWorkRequest时,我添加了addTag()并使用相同的标签名来取消任务,使用它可以取消待处理的工作。所以我的代码是这样的:
PeriodicWorkRequest.Builder wifiWorkBuilder =
new PeriodicWorkRequest.Builder(FileUpload.class, 15,
TimeUnit.MINUTES)
.addTag("WIFIJOB1")
.setConstraints(new Constraints.Builder().setRequiredNetworkType(NetworkType.METERED).build());
wifiWork = wifiWorkBuilder.build();
WorkManager.getInstance().enqueueUniquePeriodicWork("wifiJob", ExistingPeriodicWorkPolicy.REPLACE, wifiWork);
Run Code Online (Sandbox Code Playgroud)
要停止工作,我正在使用:
WorkManager.getInstance().cancelAllWorkByTag("WIFIJOB1");
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3334 次 |
| 最近记录: |