WorkContinuation

public abstract class WorkContinuation


A class that allows you to chain together OneTimeWorkRequests. WorkContinuations allow the user to create arbitrary acyclic graphs of work dependencies. You can add dependent work to a WorkContinuation by invoking then or its variants. This returns a new WorkContinuation.

To construct more complex graphs, combine or its variants can be used to return a WorkContinuation with the input WorkContinuations as prerequisites. To create a graph like this:

    A       C
    |       |
    B       D
    |       |
    +-------+
        |
E    
you would write the following:
 WorkContinuation left = workManager.beginWith(A).then(B);
 WorkContinuation right = workManager.beginWith(C).then(D);
 WorkContinuation final = WorkContinuation.combine(Arrays.asList(left, right)).then(E);
 final.enqueue();
Not that enqueuing a WorkContinuation enqueues all previously-unenqueued prerequisites. You must call enqueue to inform WorkManager to actually enqueue the work graph. As usual, enqueues are asynchronous - you can observe or block on the returned Operation if you need to be informed about its completion.

Because of the fluent nature of this class, its existence should be invisible in most cases.

Summary

Public constructors

Public methods

static @NonNull WorkContinuation

Combines multiple WorkContinuations as prerequisites for a new WorkContinuation to allow for complex chaining.

abstract @NonNull Operation

Enqueues the instance of WorkContinuation on the background thread.

abstract @NonNull ListenableFuture<List<WorkInfo>>

Returns a ListenableFuture of a List of WorkInfos that provides information about the status of each OneTimeWorkRequest in this WorkContinuation, as well as their prerequisites.

abstract @NonNull LiveData<List<WorkInfo>>

Returns a LiveData list of WorkInfos that provide information about the status of each OneTimeWorkRequest in this WorkContinuation, as well as their prerequisites.

abstract @NonNull WorkContinuation

Adds new OneTimeWorkRequest items that depend on the successful completion of all previously added OneTimeWorkRequests.

final @NonNull WorkContinuation

Adds new OneTimeWorkRequest items that depend on the successful completion of all previously added OneTimeWorkRequests.

Public constructors

WorkContinuation

Added in 1.0.0
public WorkContinuation()

Public methods

combine

Added in 1.0.0
public static @NonNull WorkContinuation combine(@NonNull List<WorkContinuation> continuations)

Combines multiple WorkContinuations as prerequisites for a new WorkContinuation to allow for complex chaining. For example, to create a graph like this:

    A       C
    |       |
    B       D
    |       |
    +-------+
        |
E    
you would write the following:
 WorkContinuation left = workManager.beginWith(A).then(B);
 WorkContinuation right = workManager.beginWith(C).then(D);
 WorkContinuation final = WorkContinuation.combine(Arrays.asList(left, right)).then(E);
 final.enqueue();
Parameters
@NonNull List<WorkContinuation> continuations

One or more WorkContinuations that are prerequisites for the return value

Returns
@NonNull WorkContinuation

A WorkContinuation that allows further chaining

enqueue

Added in 1.0.0
public abstract @NonNull Operation enqueue()

Enqueues the instance of WorkContinuation on the background thread.

Returns
@NonNull Operation

An Operation that can be used to determine when the enqueue has completed

getWorkInfos

Added in 1.0.0
public abstract @NonNull ListenableFuture<List<WorkInfo>> getWorkInfos()

Returns a ListenableFuture of a List of WorkInfos that provides information about the status of each OneTimeWorkRequest in this WorkContinuation, as well as their prerequisites.

getWorkInfosLiveData

Added in 1.0.0
public abstract @NonNull LiveData<List<WorkInfo>> getWorkInfosLiveData()

Returns a LiveData list of WorkInfos that provide information about the status of each OneTimeWorkRequest in this WorkContinuation, as well as their prerequisites. If the state or outputs of any of the work changes, any attached Observers will trigger.

Returns
@NonNull LiveData<List<WorkInfo>>

A LiveData containing a list of WorkInfos; you must use observe to receive updates

then

Added in 1.0.0
public abstract @NonNull WorkContinuation then(@NonNull List<OneTimeWorkRequest> work)

Adds new OneTimeWorkRequest items that depend on the successful completion of all previously added OneTimeWorkRequests.

Parameters
@NonNull List<OneTimeWorkRequest> work

One or more OneTimeWorkRequest to add as dependents

Returns
@NonNull WorkContinuation

A WorkContinuation that allows for further chaining of dependent OneTimeWorkRequests

then

Added in 1.0.0
public final @NonNull WorkContinuation then(@NonNull OneTimeWorkRequest work)

Adds new OneTimeWorkRequest items that depend on the successful completion of all previously added OneTimeWorkRequests.

Parameters
@NonNull OneTimeWorkRequest work

One or more OneTimeWorkRequests to add as dependents

Returns
@NonNull WorkContinuation

A WorkContinuation that allows for further chaining of dependent OneTimeWorkRequests