devz
devz

Reputation: 2819

WorkManager retry not working

I have a WorkManager with custom backoff policy. But this does not work.

Enque the Worker

public void startWorker() {
    Constraints constraints = new Constraints.Builder()
        .setRequiredNetworkType(NetworkType.CONNECTED)
        .build();
         Log.i("WorkManager", "starting workmanager");

        OneTimeWorkRequest work = new OneTimeWorkRequest.Builder(UploadWorker.class)
                .setInitialDelay(5, TimeUnit.SECONDS)
                .setConstraints(constraints)
                .setBackoffCriteria(BackoffPolicy.LINEAR, WorkRequest.MIN_BACKOFF_MILLIS, TimeUnit.MILLISECONDS) // Custom retry not working
            .build();

    WorkManager.getInstance().enqueue(work);
}

Worker

public class UploadWorker extends Worker {

    @Override
    public Worker.Result doWork() {

        // Do the work here--in this case, compress the stored images.
        // In this example no parameters are passed; the task is
        // assumed to be "compress the whole library."
        Log.i("WorkManager", "do some stuff " + getId());

        // Indicate success or failure with your return value:
        return Result.RETRY;

        // (Returning RETRY tells WorkManager to try this task again
        // later; FAILURE says not to try again.)
    }
}

Some logs of the tests

08-21 18:16:05.064 8994-8994/com.worker.test I/WorkManager: starting workmanager
08-21 18:16:05.134 8994-9037/com.worker.test I/WorkManager: do some stuff a3f6ca8f-3b05-4691-bd29-dfec720045e9
08-21 18:16:05.136 8994-9037/com.worker.test I/WorkerWrapper: Worker result RETRY for Work [ id=a3f6ca8f-3b05-4691-bd29-dfec720045e9, tags={ com.worker.test.UploadWorker } ]
08-21 18:16:28.770 8994-8994/com.worker.test I/WorkManager: starting workmanager
08-21 18:16:28.807 8994-9039/com.worker.test I/WorkManager: do some stuff 396e6018-4b6c-478d-aaf4-a69ab5f555dd
08-21 18:16:28.808 8994-9039/com.worker.test I/WorkerWrapper: Worker result RETRY for Work [ id=396e6018-4b6c-478d-aaf4-a69ab5f555dd, tags={ com.worker.test.UploadWorker } ]
08-21 18:17:11.600 8994-8994/com.worker.test I/WorkManager: starting workmanager
08-21 18:17:11.659 8994-9076/com.worker.test I/WorkManager: do some stuff c4edd69c-e465-435f-8252-3e4973a320c7
08-21 18:17:11.661 8994-9076/com.worker.test I/WorkerWrapper: Worker result RETRY for Work [ id=c4edd69c-e465-435f-8252-3e4973a320c7, tags={ com.worker.test.UploadWorker } ]

I'm using the verion 1.0.0-alpha07 of work-runtime.

Is this a Bug or am I missing something?

Upvotes: 2

Views: 3685

Answers (1)

devz
devz

Reputation: 2819

The issue just got fixed and will be available in alpha08.

https://android-review.googlesource.com/c/platform/frameworks/support/+/735900

Upvotes: 2

Related Questions