Ciclo de vida de solicitudes de Cronet
Organiza tus páginas con colecciones
Guarda y categoriza el contenido según tus preferencias.
Obtén información sobre el ciclo de vida de las solicitudes creadas con Cronet y cómo administrarlas con los métodos de devolución de llamada que proporciona la biblioteca.
Descripción general del ciclo de vida
Las solicitudes de red creadas con la biblioteca Cronet se representan con la clase UrlRequest
.
Los siguientes conceptos son importantes para comprender el ciclo de vida de UrlRequest
:
- Estados
- Un estado es la condición particular en la que se encuentra la solicitud en un momento específico.
Los objetos UrlRequest creados con la Biblioteca de Cronet pasan por diferentes estados durante su ciclo de vida. El ciclo de vida de la solicitud incluye un estado inicial y varios estados transitorios y finales.
- Métodos
UrlRequest
- Los clientes pueden llamar a métodos específicos en objetos
UrlRequest
según el estado. Los métodos mueven la solicitud de un estado a otro.
- Métodos
Callback
- Cuando implementas métodos de la clase
UrlRequest.Callback
, tu app puede recibir actualizaciones sobre el progreso de la solicitud. Puedes implementar los métodos de devolución de llamada para llamar a los métodos del objeto UrlRequest
que llevan el ciclo de vida de un estado a otro.
En la siguiente lista, se describe el flujo del ciclo de vida de UrlRequest
:
- El ciclo de vida se encuentra en el estado Iniciado después de que tu app llama al método
start()
.
- El servidor podría enviar una respuesta de redireccionamiento, que lleva el flujo al método
onRedirectReceived()
. En este método, puedes realizar una de las siguientes acciones del cliente:
- Sigue el redireccionamiento mediante
followRedirect()
.
Este método devuelve la solicitud al estado Iniciado.
- Cancelar la solicitud con
cancel()
.
Este método lleva la solicitud al método onCanceled()
, en el que la app puede realizar operaciones adicionales antes de que la solicitud se mueva al estado final Cancelado.
- Después de que la app sigue todos los redireccionamientos, el servidor envía los encabezados de respuesta y se llama al método
onResponseStarted()
. La solicitud está en el estado Esperando para leer(). La app debe llamar al método read()
para intentar leer parte del cuerpo de la respuesta. Después de llamar a read()
, la solicitud se encuentra en el estado Reading, donde verás los siguientes resultados posibles:
- Se completó correctamente la acción de lectura, pero hay más datos disponibles. Se llama a
onReadCompleted()
y la solicitud vuelve a tener el estado Esperando para leer().
La app debe volver a llamar al método read()
para seguir leyendo el cuerpo de la respuesta. La app también podría dejar de leer la solicitud utilizando el método cancel()
.
- Se completó correctamente la acción de lectura y no hay más datos disponibles.
Se llama al método
onSucceeded()
, y la solicitud ahora se encuentra en el estado final Completada.
- La acción de lectura falló. Se llama al método
onFailed
, y el estado final de la solicitud ahora es Con errores.
En el siguiente diagrama, se muestra el ciclo de vida de un objeto UrlRequest
:

El ciclo de vida de la solicitud de Cronet
Leyenda |
|
estado inicial |
estado final |
estado de transición |
métodos de devolución de llamada |
métodos UrlRequest |
|
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-27 (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-27 (UTC)"],[],[],null,["# Cronet request lifecycle\n\nLearn about the lifecycle of requests created using Cronet and how to manage\nthem using the callback methods provided by the library.\n\nLifecycle overview\n------------------\n\nNetwork requests created using the Cronet Library are represented by the\n[`UrlRequest`](/develop/connectivity/cronet/reference/org/chromium/net/UrlRequest) class.\nThe following concepts are important to understand the\n[`UrlRequest`](/develop/connectivity/cronet/reference/org/chromium/net/UrlRequest) lifecycle:\n\n**States**\n: A state is the particular condition that the request is in at a specific time.\n [UrlRequest](/develop/connectivity/cronet/reference/org/chromium/net/UrlRequest) objects created using the Cronet\n Library move through different states in their lifecycle. The request\n lifecycle includes an initial state, and multiple transitional and final\n states.\n\n**`UrlRequest` methods**\n: Clients can call specific methods on\n [`UrlRequest`](/develop/connectivity/cronet/reference/org/chromium/net/UrlRequest) objects depending on the\n state. The methods move the request from one state to another.\n\n**`Callback` methods**\n: By implementing methods of the\n [`UrlRequest.Callback`](/develop/connectivity/cronet/reference/org/chromium/net/UrlRequest.Callback) class, your\n app can receive updates about the progress of the request. You can implement\n the callback methods to call methods of the\n [`UrlRequest`](/develop/connectivity/cronet/reference/org/chromium/net/UrlRequest) object that take the lifecycle\n from a state to another.\n\nThe following list describes the flow of the\n[`UrlRequest`](/develop/connectivity/cronet/reference/org/chromium/net/UrlRequest) lifecycle:\n\n1. The lifecycle is in the **Started** state after your app calls the [`start()`](/develop/connectivity/cronet/reference/org/chromium/net/UrlRequest#start()) method.\n2. The server could send a redirect response, which takes the flow to the [`onRedirectReceived()`](/develop/connectivity/cronet/reference/org/chromium/net/UrlRequest.Callback#onRedirectReceived(org.chromium.net.UrlRequest,%20org.chromium.net.UrlResponseInfo,%20java.lang.String)) method. In this method, you can take one of the following client actions:\n - Follow the redirect using [`followRedirect()`](/develop/connectivity/cronet/reference/org/chromium/net/UrlRequest#followRedirect()). This method takes the request back to the **Started** state.\n - Cancel the request using [`cancel()`](/develop/connectivity/cronet/reference/org/chromium/net/UrlRequest#cancel()). This method takes the request to the [`onCanceled()`](/develop/connectivity/cronet/reference/org/chromium/net/UrlRequest.Callback#onCanceled(org.chromium.net.UrlRequest,%20org.chromium.net.UrlResponseInfo)) method where the app can perform additional operations before the request is moved to the **Canceled** final state.\n3. After the app follows all the redirects, the server sends the response headers and the [`onResponseStarted()`](/develop/connectivity/cronet/reference/org/chromium/net/UrlRequest.Callback#onResponseStarted(org.chromium.net.UrlRequest,%20org.chromium.net.UrlResponseInfo)) method is called. The request is in the **Waiting for read()** state. The app should call the [`read()`](/develop/connectivity/cronet/reference/org/chromium/net/UrlRequest#read(java.nio.ByteBuffer)) method to attempt to read part of the response body. After `read()` is called, the request is in the **Reading** state, where there are the following possible outcomes:\n - The reading action was successful, but there is more data available. The [`onReadCompleted()`](/develop/connectivity/cronet/reference/org/chromium/net/UrlRequest.Callback#onReadCompleted(org.chromium.net.UrlRequest,%20org.chromium.net.UrlResponseInfo,%20java.nio.ByteBuffer)) is called and the request is in the **Waiting for read()** state again. The app should call the [`read()`](/develop/connectivity/cronet/reference/org/chromium/net/UrlRequest#read(java.nio.ByteBuffer)) method again to continue reading the response body. The app could also stop reading the request by using the [`cancel()`](/develop/connectivity/cronet/reference/org/chromium/net/UrlRequest#cancel()) method .\n - The reading action was successful, and there is no more data available. The [`onSucceeded()`](/develop/connectivity/cronet/reference/org/chromium/net/UrlRequest.Callback#onSucceeded(org.chromium.net.UrlRequest,%20org.chromium.net.UrlResponseInfo)) method is called and the request is now in the **Succeeded** final state.\n - The reading action failed. The [`onFailed`](/develop/connectivity/cronet/reference/org/chromium/net/UrlRequest.Callback#onFailed(org.chromium.net.UrlRequest,%20org.chromium.net.UrlResponseInfo,%20org.chromium.net.CronetException)) method is called and the final state of the request is now **Failed**.\n\nThe following diagram shows the lifecycle of a\n[`UrlRequest`](/develop/connectivity/cronet/reference/org/chromium/net/UrlRequest) object:\n\n\u003cbr /\u003e\n\n\nThe Cronet request lifecycle\n\n| Legend | |\n|----------------------|------------------|\n| initial state | final state |\n| transitional state | callback methods |\n| `UrlRequest` methods | |"]]