RemoteWorkManager


public abstract class RemoteWorkManager


A subset of androidx.work.WorkManager APIs that are available for apps that use multiple processes.

Summary

Public methods

abstract @NonNull RemoteWorkContinuation
beginUniqueWork(
    @NonNull String uniqueWorkName,
    @NonNull ExistingWorkPolicy existingWorkPolicy,
    @NonNull List<OneTimeWorkRequest> work
)

This method allows you to begin unique chains of work for situations where you only want one chain with a given name to be active at a time.

final @NonNull RemoteWorkContinuation
beginUniqueWork(
    @NonNull String uniqueWorkName,
    @NonNull ExistingWorkPolicy existingWorkPolicy,
    @NonNull OneTimeWorkRequest work
)

This method allows you to begin unique chains of work for situations where you only want one chain with a given name to be active at a time.

abstract @NonNull RemoteWorkContinuation

Begins a chain with one or more OneTimeWorkRequests, which can be enqueued together in the future using enqueue.

final @NonNull RemoteWorkContinuation

Begins a chain with one or more OneTimeWorkRequests, which can be enqueued together in the future using enqueue.

abstract @NonNull ListenableFuture<Void>

Cancels all unfinished work.

abstract @NonNull ListenableFuture<Void>

Cancels all unfinished work with the given tag.

abstract @NonNull ListenableFuture<Void>
cancelUniqueWork(@NonNull String uniqueWorkName)

Cancels all unfinished work in the work chain with the given name.

abstract @NonNull ListenableFuture<Void>

Cancels work with the given id if it isn't finished.

abstract @NonNull ListenableFuture<Void>

Enqueues one item for background processing.

abstract @NonNull ListenableFuture<Void>

Enqueues one or more items for background processing.

abstract @NonNull ListenableFuture<Void>
enqueueUniquePeriodicWork(
    @NonNull String uniqueWorkName,
    @NonNull ExistingPeriodicWorkPolicy existingPeriodicWorkPolicy,
    @NonNull PeriodicWorkRequest periodicWork
)

This method allows you to enqueue a uniquely-named PeriodicWorkRequest, where only one PeriodicWorkRequest of a particular name can be active at a time.

abstract @NonNull ListenableFuture<Void>
enqueueUniqueWork(
    @NonNull String uniqueWorkName,
    @NonNull ExistingWorkPolicy existingWorkPolicy,
    @NonNull List<OneTimeWorkRequest> work
)

This method allows you to enqueue work requests to a uniquely-named RemoteWorkContinuation, where only one continuation of a particular name can be active at a time.

final @NonNull ListenableFuture<Void>
enqueueUniqueWork(
    @NonNull String uniqueWorkName,
    @NonNull ExistingWorkPolicy existingWorkPolicy,
    @NonNull OneTimeWorkRequest work
)

This method allows you to enqueue work requests to a uniquely-named RemoteWorkContinuation, where only one continuation of a particular name can be active at a time.

static @NonNull RemoteWorkManager

Gets the instance of RemoteWorkManager which provides a subset of WorkManager APIs that are safe to use for apps that use multiple processes.

abstract @NonNull ListenableFuture<List<WorkInfo>>

Gets the ListenableFuture of the List of WorkInfo for all work referenced by the WorkQuery specification.

Public methods

beginUniqueWork

Added in 2.5.0
public abstract @NonNull RemoteWorkContinuation beginUniqueWork(
    @NonNull String uniqueWorkName,
    @NonNull ExistingWorkPolicy existingWorkPolicy,
    @NonNull List<OneTimeWorkRequest> work
)

This method allows you to begin unique chains of work for situations where you only want one chain with a given name to be active at a time. For example, you may only want one sync operation to be active. If there is one pending, you can choose to let it run or replace it with your new work.

The uniqueWorkName uniquely identifies this set of work.

If this method determines that new work should be enqueued and run, all records of previous work with uniqueWorkName will be pruned. If this method determines that new work should NOT be run, then the entire chain will be considered a no-op.

If any work in the chain fails or is cancelled, all of its dependent work inherits that state and will never run. This is particularly important if you are using APPEND as your ExistingWorkPolicy.

Parameters
@NonNull String uniqueWorkName

A unique name which for this chain of work

@NonNull ExistingWorkPolicy existingWorkPolicy

An ExistingWorkPolicy; see below for more information

@NonNull List<OneTimeWorkRequest> work

One or more OneTimeWorkRequest to enqueue. REPLACE ensures that if there is pending work labelled with uniqueWorkName, it will be cancelled and the new work will run. KEEP will run the new sequence of work only if there is no pending work labelled with uniqueWorkName. APPEND will create a new sequence of work if there is no existing work with uniqueWorkName; otherwise, work will be added as a child of all leaf nodes labelled with uniqueWorkName.

Returns
@NonNull RemoteWorkContinuation

A RemoteWorkContinuation that allows further chaining

beginUniqueWork

Added in 2.5.0
public final @NonNull RemoteWorkContinuation beginUniqueWork(
    @NonNull String uniqueWorkName,
    @NonNull ExistingWorkPolicy existingWorkPolicy,
    @NonNull OneTimeWorkRequest work
)

This method allows you to begin unique chains of work for situations where you only want one chain with a given name to be active at a time. For example, you may only want one sync operation to be active. If there is one pending, you can choose to let it run or replace it with your new work.

The uniqueWorkName uniquely identifies this set of work.

If this method determines that new work should be enqueued and run, all records of previous work with uniqueWorkName will be pruned. If this method determines that new work should NOT be run, then the entire chain will be considered a no-op.

If any work in the chain fails or is cancelled, all of its dependent work inherits that state and will never run. This is particularly important if you are using APPEND as your ExistingWorkPolicy.

Parameters
@NonNull String uniqueWorkName

A unique name which for this chain of work

@NonNull ExistingWorkPolicy existingWorkPolicy

An ExistingWorkPolicy

@NonNull OneTimeWorkRequest work

The OneTimeWorkRequest to enqueue. REPLACE ensures that if there is pending work labelled with uniqueWorkName, it will be cancelled and the new work will run. KEEP will run the new sequence of work only if there is no pending work labelled with uniqueWorkName. APPEND will create a new sequence of work if there is no existing work with uniqueWorkName; otherwise, work will be added as a child of all leaf nodes labelled with uniqueWorkName.

Returns
@NonNull RemoteWorkContinuation

A RemoteWorkContinuation that allows further chaining

beginWith

Added in 2.5.0
public abstract @NonNull RemoteWorkContinuation beginWith(@NonNull List<OneTimeWorkRequest> work)

Begins a chain with one or more OneTimeWorkRequests, which can be enqueued together in the future using enqueue.

If any work in the chain fails or is cancelled, all of its dependent work inherits that state and will never run.

Parameters
@NonNull List<OneTimeWorkRequest> work

One or more OneTimeWorkRequest to start a chain of work

Returns
@NonNull RemoteWorkContinuation

A RemoteWorkContinuation that allows for further chaining of dependent OneTimeWorkRequest

beginWith

Added in 2.5.0
public final @NonNull RemoteWorkContinuation beginWith(@NonNull OneTimeWorkRequest work)

Begins a chain with one or more OneTimeWorkRequests, which can be enqueued together in the future using enqueue.

If any work in the chain fails or is cancelled, all of its dependent work inherits that state and will never run.

Parameters
@NonNull OneTimeWorkRequest work

One or more OneTimeWorkRequest to start a chain of work

Returns
@NonNull RemoteWorkContinuation

A RemoteWorkContinuation that allows for further chaining of dependent OneTimeWorkRequest

cancelAllWork

Added in 2.5.0
public abstract @NonNull ListenableFuture<VoidcancelAllWork()

Cancels all unfinished work. Use this method with extreme caution! By invoking it, you will potentially affect other modules or libraries in your codebase. It is strongly recommended that you use one of the other cancellation methods at your disposal.

Upon cancellation, onStopped will be invoked for any affected workers.

Returns
@NonNull ListenableFuture<Void>

A ListenableFuture that can be used to determine when the cancelAllWork has completed

cancelAllWorkByTag

Added in 2.5.0
public abstract @NonNull ListenableFuture<VoidcancelAllWorkByTag(@NonNull String tag)

Cancels all unfinished work with the given tag. Note that cancellation is a best-effort policy and work that is already executing may continue to run. Upon cancellation, onStopped will be invoked for any affected workers.

Parameters
@NonNull String tag

The tag used to identify the work

Returns
@NonNull ListenableFuture<Void>

An ListenableFuture that can be used to determine when the cancelAllWorkByTag has completed

cancelUniqueWork

Added in 2.5.0
public abstract @NonNull ListenableFuture<VoidcancelUniqueWork(@NonNull String uniqueWorkName)

Cancels all unfinished work in the work chain with the given name. Note that cancellation is a best-effort policy and work that is already executing may continue to run. Upon cancellation, onStopped will be invoked for any affected workers.

Parameters
@NonNull String uniqueWorkName

The unique name used to identify the chain of work

Returns
@NonNull ListenableFuture<Void>

A ListenableFuture that can be used to determine when the cancelUniqueWork has completed

cancelWorkById

Added in 2.5.0
public abstract @NonNull ListenableFuture<VoidcancelWorkById(@NonNull UUID id)

Cancels work with the given id if it isn't finished. Note that cancellation is a best-effort policy and work that is already executing may continue to run. Upon cancellation, onStopped will be invoked for any affected workers.

Parameters
@NonNull UUID id

The id of the work

Returns
@NonNull ListenableFuture<Void>

A ListenableFuture that can be used to determine when the cancelWorkById has completed

enqueue

Added in 2.5.0
public abstract @NonNull ListenableFuture<Voidenqueue(@NonNull WorkRequest request)

Enqueues one item for background processing.

Parameters
@NonNull WorkRequest request

The WorkRequest to enqueue

Returns
@NonNull ListenableFuture<Void>

A ListenableFuture that can be used to determine when the enqueue has completed

enqueue

Added in 2.5.0
public abstract @NonNull ListenableFuture<Voidenqueue(@NonNull List<WorkRequest> requests)

Enqueues one or more items for background processing.

Parameters
@NonNull List<WorkRequest> requests

One or more WorkRequest to enqueue

Returns
@NonNull ListenableFuture<Void>

A ListenableFuture that can be used to determine when the enqueue has completed

enqueueUniquePeriodicWork

Added in 2.5.0
public abstract @NonNull ListenableFuture<VoidenqueueUniquePeriodicWork(
    @NonNull String uniqueWorkName,
    @NonNull ExistingPeriodicWorkPolicy existingPeriodicWorkPolicy,
    @NonNull PeriodicWorkRequest periodicWork
)

This method allows you to enqueue a uniquely-named PeriodicWorkRequest, where only one PeriodicWorkRequest of a particular name can be active at a time. For example, you may only want one sync operation to be active. If there is one pending, you can choose to let it run or replace it with your new work.

The uniqueWorkName uniquely identifies this PeriodicWorkRequest.

Parameters
@NonNull String uniqueWorkName

A unique name which for this operation

@NonNull ExistingPeriodicWorkPolicy existingPeriodicWorkPolicy

An ExistingPeriodicWorkPolicy

@NonNull PeriodicWorkRequest periodicWork

A PeriodicWorkRequest to enqueue. REPLACE ensures that if there is pending work labelled with uniqueWorkName, it will be cancelled and the new work will run. KEEP will run the new PeriodicWorkRequest only if there is no pending work labelled with uniqueWorkName.

Returns
@NonNull ListenableFuture<Void>

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

enqueueUniqueWork

Added in 2.5.0
public abstract @NonNull ListenableFuture<VoidenqueueUniqueWork(
    @NonNull String uniqueWorkName,
    @NonNull ExistingWorkPolicy existingWorkPolicy,
    @NonNull List<OneTimeWorkRequest> work
)

This method allows you to enqueue work requests to a uniquely-named RemoteWorkContinuation, where only one continuation of a particular name can be active at a time. For example, you may only want one sync operation to be active. If there is one pending, you can choose to let it run or replace it with your new work.

The uniqueWorkName uniquely identifies this RemoteWorkContinuation.

Parameters
@NonNull String uniqueWorkName

A unique name which for this operation

@NonNull ExistingWorkPolicy existingWorkPolicy

An ExistingWorkPolicy

@NonNull List<OneTimeWorkRequest> work

OneTimeWorkRequests to enqueue. REPLACE ensures that if there is pending work labelled with uniqueWorkName, it will be cancelled and the new work will run. KEEP will run the new OneTimeWorkRequests only if there is no pending work labelled with uniqueWorkName. APPEND will append the OneTimeWorkRequests as leaf nodes labelled with uniqueWorkName.

Returns
@NonNull ListenableFuture<Void>

A ListenableFuture that can be used to determine when the enqueue has completed

enqueueUniqueWork

Added in 2.5.0
public final @NonNull ListenableFuture<VoidenqueueUniqueWork(
    @NonNull String uniqueWorkName,
    @NonNull ExistingWorkPolicy existingWorkPolicy,
    @NonNull OneTimeWorkRequest work
)

This method allows you to enqueue work requests to a uniquely-named RemoteWorkContinuation, where only one continuation of a particular name can be active at a time. For example, you may only want one sync operation to be active. If there is one pending, you can choose to let it run or replace it with your new work.

The uniqueWorkName uniquely identifies this RemoteWorkContinuation.

Parameters
@NonNull String uniqueWorkName

A unique name which for this operation

@NonNull ExistingWorkPolicy existingWorkPolicy

An ExistingWorkPolicy; see below for more information

@NonNull OneTimeWorkRequest work

The OneTimeWorkRequests to enqueue. REPLACE ensures that if there is pending work labelled with uniqueWorkName, it will be cancelled and the new work will run. KEEP will run the new OneTimeWorkRequests only if there is no pending work labelled with uniqueWorkName. APPEND will append the OneTimeWorkRequests as leaf nodes labelled with uniqueWorkName.

Returns
@NonNull ListenableFuture<Void>

A ListenableFuture that can be used to determine when the enqueue has completed

getInstance

Added in 2.5.0
public static @NonNull RemoteWorkManager getInstance(@NonNull Context context)

Gets the instance of RemoteWorkManager which provides a subset of WorkManager APIs that are safe to use for apps that use multiple processes.

Parameters
@NonNull Context context

The application context.

Returns
@NonNull RemoteWorkManager

The instance of RemoteWorkManager.

getWorkInfos

Added in 2.5.0
public abstract @NonNull ListenableFuture<List<WorkInfo>> getWorkInfos(@NonNull WorkQuery workQuery)

Gets the ListenableFuture of the List of WorkInfo for all work referenced by the WorkQuery specification.

Parameters
@NonNull WorkQuery workQuery

The work query specification

Returns
@NonNull ListenableFuture<List<WorkInfo>>

A ListenableFuture of the List of WorkInfo for work referenced by this WorkQuery.