Cycle de vie des requêtes Cronet

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:

  1. Une fois que votre application a appelé la méthode start(), le cycle de vie est à l'état Started (Démarré).
  2. 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).
  3. 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:

Diagramme du cycle de vie des requêtes Cronet
Cycle de vie des requêtes Cronet

Légende
État initial de Icône de la légende de l'état initial Cronet Icône de légende de l'état final Cronet état final
État de transition de Icône de légende d'état de transition Cronet Icône de légende des méthodes de rappel Cronet méthodes de rappel
Icône de la légende d'action du client Cronet méthode UrlRequest