WorkContinuation

abstract class WorkContinuation
kotlin.Any
   ↳ androidx.work.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(OneTimeWorkRequest) or its variants. This returns a new WorkContinuation.

To construct more complex graphs, WorkContinuation#combine(List) 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:
<code>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();</code>
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

A class that allows you to chain together OneTimeWorkRequests.

Public methods

open static WorkContinuation
combine(@NonNull continuations: MutableList<WorkContinuation!>)

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

abstract Operation

Enqueues the instance of WorkContinuation on the background thread.

abstract ListenableFuture<MutableList<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 LiveData<MutableList<WorkInfo!>!>

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

WorkContinuation
then(@NonNull work: OneTimeWorkRequest)

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

abstract WorkContinuation

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

Public constructors

<init>

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(OneTimeWorkRequest) or its variants. This returns a new WorkContinuation.

To construct more complex graphs, WorkContinuation#combine(List) 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:
<code>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();</code>
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.

Public methods

combine

@NonNull open static fun combine(@NonNull continuations: MutableList<WorkContinuation!>): WorkContinuation

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:
<code>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();</code>

Parameters
continuations MutableList<WorkContinuation!>: One or more WorkContinuations that are prerequisites for the return value
Return
WorkContinuation: A WorkContinuation that allows further chaining

enqueue

@NonNull abstract fun enqueue(): Operation

Enqueues the instance of WorkContinuation on the background thread.

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

getWorkInfos

@NonNull abstract fun getWorkInfos(): ListenableFuture<MutableList<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.

Return
ListenableFuture<MutableList<WorkInfo!>!>: A ListenableFuture of a List of WorkInfos

getWorkInfosLiveData

@NonNull abstract fun getWorkInfosLiveData(): LiveData<MutableList<WorkInfo!>!>

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.

Return
LiveData<MutableList<WorkInfo!>!>: A LiveData containing a list of WorkInfos; you must use LiveData#observe(LifecycleOwner, Observer) to receive updates

then

@NonNull fun then(@NonNull work: OneTimeWorkRequest): WorkContinuation

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

Parameters
work OneTimeWorkRequest: One or more OneTimeWorkRequests to add as dependents
Return
WorkContinuation: A WorkContinuation that allows for further chaining of dependent OneTimeWorkRequests

then

@NonNull abstract fun then(@NonNull work: MutableList<OneTimeWorkRequest!>): WorkContinuation

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

Parameters
work MutableList<OneTimeWorkRequest!>: One or more OneTimeWorkRequest to add as dependents
Return
WorkContinuation: A WorkContinuation that allows for further chaining of dependent OneTimeWorkRequests