Enqueue cleanup work in batches

gtask_related_email
Alex Baker 6 years ago
parent 21b3cba8e3
commit 82754b50ef

@ -8,6 +8,7 @@ import static io.reactivex.Single.just;
import static io.reactivex.Single.zip; import static io.reactivex.Single.zip;
import static org.tasks.date.DateTimeUtils.midnight; import static org.tasks.date.DateTimeUtils.midnight;
import static org.tasks.date.DateTimeUtils.newDateTime; 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.currentTimeMillis;
import static org.tasks.time.DateTimeUtils.printDuration; import static org.tasks.time.DateTimeUtils.printDuration;
import static org.tasks.time.DateTimeUtils.printTimestamp; import static org.tasks.time.DateTimeUtils.printTimestamp;
@ -48,6 +49,7 @@ import timber.log.Timber;
@ApplicationScope @ApplicationScope
public class WorkManager { public class WorkManager {
private static final int MAX_CLEANUP_LENGTH = 500;
private static final String TAG_BACKUP = "tag_backup"; private static final String TAG_BACKUP = "tag_backup";
private static final String TAG_REFRESH = "tag_refresh"; private static final String TAG_REFRESH = "tag_refresh";
private static final String TAG_MIDNIGHT_REFRESH = "tag_midnight_refresh"; private static final String TAG_MIDNIGHT_REFRESH = "tag_midnight_refresh";
@ -86,13 +88,17 @@ public class WorkManager {
} }
public void cleanup(List<Long> ids) { public void cleanup(List<Long> ids) {
batch(
ids,
MAX_CLEANUP_LENGTH,
b ->
workManager.enqueue( workManager.enqueue(
new OneTimeWorkRequest.Builder(CleanupWork.class) new Builder(CleanupWork.class)
.setInputData( .setInputData(
new Data.Builder() new Data.Builder()
.putLongArray(CleanupWork.EXTRA_TASK_IDS, Longs.toArray(ids)) .putLongArray(CleanupWork.EXTRA_TASK_IDS, Longs.toArray(b))
.build()) .build())
.build()); .build()));
} }
public void sync(boolean immediate) { public void sync(boolean immediate) {

Loading…
Cancel
Save