Operation

interface Operation


An object that provides information about the execution of an asynchronous command being performed by WorkManager. Operations are generally tied to enqueue or cancel commands; when you call one of those commands, they occur asynchronously. You can observe or await these commands by using the returned Operation.

Summary

Nested types

abstract class Operation.State

The lifecycle state of an Operation.

This represents an Operation which has failed.

This represents an Operation which is in progress.

This represents an Operation which is successful.

Public functions

ListenableFuture<Operation.State.SUCCESS!>

Gets a ListenableFuture for the terminal state of the Operation.

LiveData<Operation.State!>

Gets a LiveData of the Operation State.

Extension functions

suspend inline Operation.State.SUCCESS

Awaits an Operation without blocking a thread.

Public functions

getResult

Added in 1.0.0
fun getResult(): ListenableFuture<Operation.State.SUCCESS!>

Gets a ListenableFuture for the terminal state of the Operation. This will only resolve with a State.SUCCESS. The State.FAILURE state will come through as a Throwable on the ListenableFuture. State.IN_PROGRESS will never be reported as it's not a terminal state.

Call get to block until the Operation reaches a terminal state.

getState

Added in 1.0.0
fun getState(): LiveData<Operation.State!>

Gets a LiveData of the Operation State.

Returns
LiveData<Operation.State!>

A LiveData of the Operation State; you must use observe to receive updates

Extension functions

suspend inline fun Operation.await(): Operation.State.SUCCESS

Awaits an Operation without blocking a thread.

This method returns the terminal state of the [Operation] which is [Operation.State.SUCCESS] or throws a [Throwable] that represents why the [Operation] failed.