Ciclo di vita di una richiesta Cronet

Scopri il ciclo di vita delle richieste create utilizzando Cronet e come gestirle utilizzando i metodi di callback forniti dalla libreria.

Panoramica del ciclo di vita

Le richieste di rete create utilizzando la libreria Cronet sono rappresentate dalla classe UrlRequest. I seguenti concetti sono importanti per comprendere il ciclo di vita di UrlRequest:

Stati
Uno stato è la condizione particolare in cui si trova la richiesta in un momento specifico. Gli oggetti UrlRequest creati utilizzando la libreria Cronet si muovono in stati diversi nel loro ciclo di vita. Il ciclo di vita delle richieste include uno stato iniziale e più stati di transizione e finali.
UrlRequest metodi
I client possono chiamare metodi specifici sugli oggetti UrlRequest a seconda dello stato. I metodi consentono di spostare la richiesta da uno stato all'altro.
Callback metodi
Se implementi i metodi della classe UrlRequest.Callback, la tua app può ricevere aggiornamenti sull'avanzamento della richiesta. Puoi implementare i metodi di callback per chiamare i metodi dell'oggetto UrlRequest che eseguono il ciclo di vita da uno stato a un altro.

Il seguente elenco descrive il flusso del ciclo di vita di UrlRequest:

  1. Il ciclo di vita è in stato Iniziato dopo che l'app chiama il metodo start().
  2. Il server potrebbe inviare una risposta di reindirizzamento, che indirizza il flusso al metodo onRedirectReceived(). Con questo metodo puoi eseguire una delle seguenti azioni del client:
    • Segui il reindirizzamento utilizzando followRedirect(). Questo metodo riporta la richiesta allo stato Avviata.
    • Annulla la richiesta utilizzando cancel(). Questo metodo trasferisce la richiesta al metodo onCanceled(), con cui l'app può eseguire operazioni aggiuntive prima che la richiesta venga spostata allo stato finale Annullata.
  3. Dopo che l'app ha seguito tutti i reindirizzamenti, il server invia le intestazioni della risposta e viene chiamato il metodo onResponseStarted(). La richiesta è in stato In attesa di read(). L'app deve chiamare il metodo read() per tentare di leggere parte del corpo della risposta. Dopo la chiamata a read(), la richiesta è in stato Lettura, con i seguenti risultati possibili:
    • L'azione di lettura è riuscita, ma sono disponibili più dati. Il onReadCompleted() viene chiamato e la richiesta è di nuovo in stato In attesa di read(). L'app dovrebbe richiamare di nuovo il metodo read() per continuare a leggere il corpo della risposta. L'app potrebbe anche interrompere la lettura della richiesta utilizzando il metodo cancel() .
    • L'azione di lettura è stata completata correttamente e non sono disponibili altri dati. Viene chiamato il metodo onSucceeded() e la richiesta si trova ora nello stato finale Riuscito.
    • Azione di lettura non riuscita. Viene richiamato il metodo onFailed e lo stato finale della richiesta è ora Non riuscita.

Il seguente diagramma mostra il ciclo di vita di un oggetto UrlRequest:

Diagramma del ciclo di vita
delle richieste Cronet
Il ciclo di vita delle richieste Cronet

Legenda
Stato iniziale Icona legenda stato iniziale Cronet Icona legenda stato finale Cronet stato finale
Stato di transizione Icona legenda stato di transizione Cronet Icona legenda metodi di callback Cronet metodi di callback
Icona legenda azioni client Cronet metodo UrlRequest