gpt4 book ai didi

Android Worker 多次执行作业

转载 作者:行者123 更新时间:2023-11-29 02:25:46 24 4
gpt4 key购买 nike

我使用以下代码安排每 15 分钟执行一次后台作业。

WorkManager workManager = WorkManager.getInstance();
PeriodicWorkRequest ulpBackup;

ulpBackup = new PeriodicWorkRequest
.Builder(Ulp.class, 15, TimeUnit.MINUTES)
.addTag(activity.getString(R.string.job_tag))
.build();
workManager.enqueue(ulpBackup);

这是 UlpBackup.class

public class UlpBackup extends Worker {
private Integer responseCounter = 0;

public UlpBackup() {}

@NonNull
@Override
public Result doWork() {

Log.d(logTag, "Starting periodic backup job";
final CountDownLatch countDownLatch = new CountDownLatch(1);

/** Read from local database and upload to firestore **/

localdb.setAPIListener(new APIListener() {
@Override
public void OnSuccess() {
responseCounter++;
if (responseCounter == 5) {
countDownLatch.countDown();
}
}

@Override
public void OnFailure() {
responseCounter++;
if (responseCounter == 5) {
countDownLatch.countDown();
}
}
});

localdb.sync();

try {
countDownLatch.await(300, TimeUnit.SECONDS);
} catch (Exception exception) {
Log.e(logTag, "Error in user list backup job " + exception.getMessage());
return Result.FAILURE;
}

Log.e(logTag, "Ulp backup completed");
return Result.SUCCESS;
}

上面的代码工作正常,工作按预期大约每 15 分钟发生一次。我唯一不明白的是每次作业执行多次,有人可以解释为什么以及如何避免吗?

来自日志:

09-15 23:33:37.514 8190-8410: Starting periodic backup job
09-15 23:33:37.520 8190-8414: Starting periodic backup job
09-15 23:33:37.561 8190-8412: Starting periodic backup job
09-15 23:33:37.568 8190-8413: Starting periodic backup job
...
...
09-15 23:33:38.183 8190-8414: Ulp backup completed
09-15 23:33:39.164 8190-8412: Ulp backup completed
09-15 23:33:39.580 8190-8413: Ulp backup completed
09-15 23:38:37.517 8190-8410: Ulp backup completed

最佳答案

您可以使用以下方法:enqueueUniquePeriodicWork(),并像这样实现:

WorkManager.getInstance().enqueueUniquePeriodicWork("YOUR_TAG", ExistingPeriodicWorkPolicy.KEEP, workRequest);

请注意第二个参数是关键。枚举可以是 KEEPREPLACE

关于Android Worker 多次执行作业,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52351022/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com