Cycle de vie des requêtes Cronet
Restez organisé à l'aide des collections
Enregistrez et classez les contenus selon vos préférences.
Découvrez le cycle de vie des requêtes créées à l'aide de Cronet et comment les gérer à l'aide des méthodes de rappel fournies par la bibliothèque.
Présentation du cycle de vie
Les requêtes réseau créées à l'aide de la bibliothèque Cronet sont représentées par la classe UrlRequest
.
Les concepts suivants sont importants pour comprendre le cycle de vie d'une UrlRequest
:
- États
- Un état correspond à la condition particulière dans laquelle se trouve la requête à un moment précis.
Les objets UrlRequest créés à l'aide de la bibliothèque Cronet passent par différents états dans leur cycle de vie. Le cycle de vie d'une requête comprend un état initial, ainsi que plusieurs états transitionnels et finaux.
UrlRequest
méthodes
- Les clients peuvent appeler des méthodes spécifiques sur des objets
UrlRequest
en fonction de l'état. Ces méthodes déplacent la requête d'un état à un autre.
Callback
méthodes
- En implémentant les méthodes de la classe
UrlRequest.Callback
, votre application peut recevoir des informations sur la progression de la requête. Vous pouvez implémenter les méthodes de rappel pour appeler les méthodes de l'objet UrlRequest
qui font passer le cycle de vie d'un état à un autre.
La liste suivante décrit le flux du cycle de vie d'une UrlRequest
:
- Une fois que votre application a appelé la méthode
start()
, le cycle de vie est à l'état Started (Démarré).
- Le serveur peut envoyer une réponse de redirection, qui redirige vers la méthode
onRedirectReceived()
. Avec cette méthode, vous pouvez effectuer l'une des actions suivantes sur le client :
- Suivez la redirection avec
followRedirect()
.
Avec cette méthode, la requête revient à l'état Started (Démarrée).
- Annulez la requête à l'aide de
cancel()
.
Cette méthode transmet la requête à la méthode onCanceled()
, où l'application peut effectuer des opérations supplémentaires avant que la requête ne passe à l'état final Canceled (Annulée).
- Une fois que l'application a suivi toutes les redirections, le serveur envoie les en-têtes de réponse et la méthode
onResponseStarted()
est appelée. La requête est à l'état Waiting for read(). L'application doit appeler la méthode read()
pour tenter de lire une partie du corps de la réponse. Une fois la méthode read()
appelée, la requête passe à l'état Reading. Voici les résultats possibles :
- L'action de lecture a réussi, mais d'autres données sont disponibles. Le
onReadCompleted()
est appelé et la requête présente à nouveau l'état Waiting for read().
L'application doit appeler à nouveau la méthode read()
pour continuer à lire le corps de la réponse. L'application peut également arrêter de lire la requête à l'aide de la méthode cancel()
.
- L'action de lecture a réussi, et plus aucune donnée n'est disponible.
La méthode
onSucceeded()
est appelée et la requête passe à l'état final Succeeded (Réussie).
- Échec de l'action de lecture. La méthode
onFailed
est appelée et l'état final de la requête est maintenant Failed (Échec).
Le schéma suivant illustre le cycle de vie d'un objet UrlRequest
:

Cycle de vie des requêtes Cronet
Légende |
|
État initial de  |
état final |
État de transition de  |
méthodes de rappel |
méthode UrlRequest |
|
Le contenu et les exemples de code de cette page sont soumis aux licences décrites dans la Licence de contenu. Java et OpenJDK sont des marques ou des marques déposées d'Oracle et/ou de ses sociétés affiliées.
Dernière mise à jour le 2025/07/27 (UTC).
[[["Facile à comprendre","easyToUnderstand","thumb-up"],["J'ai pu résoudre mon problème","solvedMyProblem","thumb-up"],["Autre","otherUp","thumb-up"]],[["Il n'y a pas l'information dont j'ai besoin","missingTheInformationINeed","thumb-down"],["Trop compliqué/Trop d'étapes","tooComplicatedTooManySteps","thumb-down"],["Obsolète","outOfDate","thumb-down"],["Problème de traduction","translationIssue","thumb-down"],["Mauvais exemple/Erreur de code","samplesCodeIssue","thumb-down"],["Autre","otherDown","thumb-down"]],["Dernière mise à jour le 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 | |"]]