Cómo ejecutar subprocesos en WorkManager
Organiza tus páginas con colecciones
Guarda y categoriza el contenido según tus preferencias.
En la sección Cómo comenzar a usar WorkManager, mencionamos que WorkManager realiza por ti trabajos en segundo plano de forma asíncrona. La implementación básica aborda las demandas de la mayoría de las apps. Para casos de uso más avanzados, como la correcta solución de detenciones del trabajo, debes aprender sobre los subprocesos y la concurrencia de WorkManager.
Hay cuatro tipos de primitivas de trabajo diferentes que proporciona WorkManager:
Worker
es la implementación más simple y la que se mostró en las secciones anteriores. WorkManager la ejecuta automáticamente en un subproceso, en segundo plano (que puedes anular). Obtén más información sobre los subprocesos de las instancias de Worker
en Cómo ejecutar subprocesos en Worker.
CoroutineWorker
es la implementación recomendada para usuarios de Kotlin. Las instancias CoroutineWorker
exponen una función de suspensión para el trabajo en segundo plano. De forma predeterminada, ejecutan un Dispatcher
predeterminado, que puedes personalizar. Obtén más información sobre los subprocesos de las instancias de CoroutineWorker
en Cómo ejecutar subprocesos en CoroutineWorker.
RxWorker
es la implementación recomendada para usuarios de RxJava. Debes usar RxWorkers si se modela una gran cantidad de tu código asíncrono existente en RxJava. Al igual que con todos los conceptos de RxJava, puedes elegir la estrategia de subprocesos que prefieras. Obtén más información sobre los subprocesos de las instancias de RxWorker
en Cómo ejecutar subprocesos en RxWorker.
ListenableWorker
es la clase base para Worker
, CoroutineWorker
y RxWorker
. Está destinado a los desarrolladores de Java que tienen que interactuar con API asincrónicas basadas en devoluciones de llamada como FusedLocationProviderClient
y que no utilizan RxJava. Obtén más información sobre los subprocesos de las instancias de ListenableWorker
en Cómo ejecutar subprocesos en ListenableWorker.
El contenido y las muestras de código que aparecen en esta página están sujetas a las licencias que se describen en la Licencia de Contenido. Java y OpenJDK son marcas registradas de Oracle o sus afiliados.
Última actualización: 2025-07-26 (UTC)
[[["Fácil de comprender","easyToUnderstand","thumb-up"],["Resolvió mi problema","solvedMyProblem","thumb-up"],["Otro","otherUp","thumb-up"]],[["Falta la información que necesito","missingTheInformationINeed","thumb-down"],["Muy complicado o demasiados pasos","tooComplicatedTooManySteps","thumb-down"],["Desactualizado","outOfDate","thumb-down"],["Problema de traducción","translationIssue","thumb-down"],["Problema con las muestras o los códigos","samplesCodeIssue","thumb-down"],["Otro","otherDown","thumb-down"]],["Última actualización: 2025-07-26 (UTC)"],[],[],null,["# Threading in WorkManager\n\nIn [Getting started with WorkManager](/topic/libraries/architecture/workmanager/basics),\nwe mentioned that WorkManager performs background work asynchronously on your\nbehalf. The basic implementation addresses the demands of most apps. For more\nadvanced use cases, such as correctly handling work being stopped, you should\nlearn about threading and concurrency in WorkManager.\n\nThere are four different types of work primitives provided by WorkManager:\n\n- [`Worker`](/reference/androidx/work/Worker) is the simplest implementation, and the one you have seen in previous sections. WorkManager automatically runs it on a background thread (that you can override). Read more about threading in `Worker` instances in [Threading in Worker](/topic/libraries/architecture/workmanager/advanced/worker).\n- [`CoroutineWorker`](/reference/kotlin/androidx/work/CoroutineWorker) is the recommended implementation for Kotlin users. `CoroutineWorker` instances expose a suspending function for background work. By default, they run a default `Dispatcher`, which you can customize. Read more about threading in `CoroutineWorker` instances in [Threading in CoroutineWorker](/topic/libraries/architecture/workmanager/advanced/coroutineworker).\n- [`RxWorker`](/reference/androidx/work/RxWorker) is the recommended implementation for RxJava users. RxWorkers should be used if a lot of your existing asynchronous code is modelled in RxJava. As with all RxJava concepts, you are free to choose the threading strategy of your choice. Read more about threading in `RxWorker` instances in [Threading in RxWorker](/topic/libraries/architecture/workmanager/advanced/rxworker).\n- [`ListenableWorker`](/reference/androidx/work/ListenableWorker) is the base class for `Worker`, `CoroutineWorker`, and `RxWorker`. It is intended for Java developers who have to interact with callback-based asynchronous APIs such as `FusedLocationProviderClient` and are not using RxJava. Read more about threading in `ListenableWorker` instances in [Threading in ListenableWorker](/topic/libraries/architecture/workmanager/advanced/listenableworker)."]]