From 82754b50ef88021ea30cebe67f95ac3186a78578 Mon Sep 17 00:00:00 2001 From: Alex Baker Date: Tue, 3 Dec 2019 13:49:04 -0600 Subject: [PATCH] Enqueue cleanup work in batches --- .../main/java/org/tasks/jobs/WorkManager.java | 20 ++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/app/src/main/java/org/tasks/jobs/WorkManager.java b/app/src/main/java/org/tasks/jobs/WorkManager.java index 6085d73be..601f2833f 100644 --- a/app/src/main/java/org/tasks/jobs/WorkManager.java +++ b/app/src/main/java/org/tasks/jobs/WorkManager.java @@ -8,6 +8,7 @@ import static io.reactivex.Single.just; import static io.reactivex.Single.zip; import static org.tasks.date.DateTimeUtils.midnight; import static org.tasks.date.DateTimeUtils.newDateTime; +import static org.tasks.db.DbUtils.batch; import static org.tasks.time.DateTimeUtils.currentTimeMillis; import static org.tasks.time.DateTimeUtils.printDuration; import static org.tasks.time.DateTimeUtils.printTimestamp; @@ -48,6 +49,7 @@ import timber.log.Timber; @ApplicationScope public class WorkManager { + private static final int MAX_CLEANUP_LENGTH = 500; private static final String TAG_BACKUP = "tag_backup"; private static final String TAG_REFRESH = "tag_refresh"; private static final String TAG_MIDNIGHT_REFRESH = "tag_midnight_refresh"; @@ -86,13 +88,17 @@ public class WorkManager { } public void cleanup(List ids) { - workManager.enqueue( - new OneTimeWorkRequest.Builder(CleanupWork.class) - .setInputData( - new Data.Builder() - .putLongArray(CleanupWork.EXTRA_TASK_IDS, Longs.toArray(ids)) - .build()) - .build()); + batch( + ids, + MAX_CLEANUP_LENGTH, + b -> + workManager.enqueue( + new Builder(CleanupWork.class) + .setInputData( + new Data.Builder() + .putLongArray(CleanupWork.EXTRA_TASK_IDS, Longs.toArray(b)) + .build()) + .build())); } public void sync(boolean immediate) {