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'oggettoUrlRequest
che eseguono il ciclo di vita da uno stato a un altro.
Il seguente elenco descrive il flusso del ciclo di vita di
UrlRequest
:
- Il ciclo di vita è in stato Iniziato dopo che l'app chiama il metodo
start()
. - 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 metodoonCanceled()
, con cui l'app può eseguire operazioni aggiuntive prima che la richiesta venga spostata allo stato finale Annullata.
- Segui il reindirizzamento utilizzando
- 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 metodoread()
per tentare di leggere parte del corpo della risposta. Dopo la chiamata aread()
, 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 metodoread()
per continuare a leggere il corpo della risposta. L'app potrebbe anche interrompere la lettura della richiesta utilizzando il metodocancel()
. - 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.
- L'azione di lettura è riuscita, ma sono disponibili più dati. Il
Il seguente diagramma mostra il ciclo di vita di un oggetto UrlRequest
:
Legenda | |
---|---|
Stato iniziale | stato finale |
Stato di transizione | metodi di callback |
metodo UrlRequest |