Ciclo di vita di una richiesta Cronet
Mantieni tutto organizzato con le raccolte
Salva e classifica i contenuti in base alle tue preferenze.
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
:
- 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 metodo onCanceled()
, con cui l'app può eseguire operazioni aggiuntive prima che la richiesta venga spostata allo stato finale Annullata.
- 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
:

Il ciclo di vita delle richieste Cronet
Legenda |
|
Stato iniziale  |
stato finale |
Stato di transizione  |
metodi di callback |
metodo UrlRequest |
|
I campioni di contenuti e codice in questa pagina sono soggetti alle licenze descritte nella Licenza per i contenuti. Java e OpenJDK sono marchi o marchi registrati di Oracle e/o delle sue società consociate.
Ultimo aggiornamento 2025-07-27 UTC.
[null,null,["Ultimo aggiornamento 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 | |"]]