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
La clase UrlRequest representa las solicitudes de red creadas con la biblioteca de Cronet. 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
UrlRequestcreados con la biblioteca de Cronet pasan por diferentes estados en su ciclo de vida. El ciclo de vida de la solicitud incluye un estado inicial y varios estados de transición y finales. - Métodos
UrlRequest - Los clientes pueden llamar a métodos específicos en objetos
UrlRequestsegún el estado. Los métodos mueven la solicitud de un estado a otro. - Métodos
Callback - Si 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 objetoUrlRequestque 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 puede 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 con
followRedirect(). Este método devuelve la solicitud al estado Iniciada. - Cancelar la solicitud con
cancel(). Este método lleva la solicitud al métodoonCanceled(), en el que la app puede realizar operaciones adicionales antes de que la solicitud pase al estado final Canceled.
- Sigue el redireccionamiento con
- Después de que la app sigue todos los redireccionamientos, el servidor envía los encabezados de respuesta y Cronet llama al método
onResponseStarted(). La solicitud está en el estado Esperando read(). La app debe llamar al métodoread()para intentar leer parte del cuerpo de la respuesta. Después de que tu app llama aread(), la solicitud se encuentra en el estado Reading, en el que se pueden producir los siguientes resultados:- La acción de lectura se realiza correctamente y hay más datos disponibles. Cronet llama al método
onReadCompleted()y la solicitud vuelve al estado Waiting for read(). La app puede volver a llamar al métodoread()para seguir leyendo el cuerpo de la respuesta. La app también puede dejar de leer la solicitud con el métodocancel(). - La acción de lectura se realiza correctamente y no hay más datos disponibles. Cronet llama al método
onSucceeded()y la solicitud se encuentra en el estado final Succeeded. - La acción de lectura falla. Cronet llama al método
onFailed(), y el estado final de la solicitud es Failed.
- La acción de lectura se realiza correctamente y hay más datos disponibles. Cronet llama al método
En el siguiente diagrama, se muestra el ciclo de vida de un objeto UrlRequest:
Ciclo de vida de la solicitud de Cronet
| Legend | |
|---|---|
UrlRequest |