Desde el principio, el trabajo pasa por una serie de cambios de State
.
Estados de trabajo de una sola ejecución
Para las solicitudes de trabajo one-time
, tu trabajo inicia con un estado ENQUEUED
.
En el estado ENQUEUED
, tu trabajo es apto para ejecutarse en cuanto se cumplan los requisitos de sus Constraints
y del tiempo de retraso inicial. Desde allí, pasa a un estado RUNNING
y, luego, según el resultado del trabajo, puede pasar a SUCCEEDED
, FAILED
o regresar al estado ENQUEUED
si el resultado es retry
. En cualquier momento del proceso, el trabajo se puede cancelar y pasar al estado CANCELLED
.
En la figura 1, se muestran el ciclo de vida de un trabajo de una sola ejecución y los eventos que podrían modificar su estado.
Figura 1: Diagrama de estados de un trabajo de una sola ejecución
SUCCEEDED
, FAILED
y CANCELLED
se consideran estados terminales para este tipo de trabajo. Si tu trabajo alcanza alguno de estos estados, WorkInfo.State.isFinished()
se mostrará como verdadero.
Estados de trabajo periódicos
Los estados exitosos o fallidos se aplican solo a los trabajos encadenados y de una sola ejecución.
En los trabajos periódicos, el único estado terminal es CANCELLED
. Esto se debe a que los trabajos periódicos nunca finalizan. Se reprograman después de cada ejecución, independientemente del resultado. En la figura 2, se muestra el diagrama abreviado de los estados de un trabajo periódico.
Figura 2: Diagrama de estados de trabajos periódicos
Estado bloqueado
Hay un estado final que aún no mencionamos: BLOCKED
. Este estado se aplica a los trabajos que se organizan en una serie o cadena de trabajo. Encontrarás más información sobre las cadenas de trabajo y su diagrama de estados en la sección Cómo encadenar trabajos.
Próximos pasos
En Cómo administrar trabajos, encontrarás información adicional para administrar y supervisar el progreso de tu trabajo.