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) {
workManager.enqueue( batch(
new OneTimeWorkRequest.Builder(CleanupWork.class) ids,
.setInputData( MAX_CLEANUP_LENGTH,
new Data.Builder() b ->
.putLongArray(CleanupWork.EXTRA_TASK_IDS, Longs.toArray(ids)) workManager.enqueue(
.build()) new Builder(CleanupWork.class)
.build()); .setInputData(
new Data.Builder()
.putLongArray(CleanupWork.EXTRA_TASK_IDS, Longs.toArray(b))
.build())
.build()));
} }
public void sync(boolean immediate) { public void sync(boolean immediate) {

Loading…
Cancel
Save