Ciclo de vida da solicitação do Cronet
Mantenha tudo organizado com as coleções
Salve e categorize o conteúdo com base nas suas preferências.
Saiba mais sobre o ciclo de vida das solicitações criadas usando a Cronet e como gerenciá-las
usando os métodos de callback fornecidos pela biblioteca.
Visão geral do ciclo de vida
As solicitações de rede criadas com a Biblioteca Cronet são representadas pela classe
UrlRequest
.
Os conceitos abaixo são importantes para entender o
ciclo de vida do UrlRequest
:
- Estados
- Um estado é a condição específica na qual a solicitação se encontra em um período específico.
Os objetos UrlRequest criados usando a Biblioteca Cronet passam por diferentes estados no ciclo de vida. O ciclo de vida
da solicitação inclui um estado inicial e vários estados de transição
e finais.
- Métodos
UrlRequest
- Os clientes podem chamar métodos específicos em
objetos
UrlRequest
, dependendo do
estado. Os métodos movem a solicitação de um estado para outro.
- Métodos
Callback
- Ao implementar métodos da classe
UrlRequest.Callback
, seu
app pode receber atualizações sobre o andamento da solicitação. É possível implementar
os métodos de callback para chamar métodos do objeto
UrlRequest
que levam o ciclo de vida
de um estado para outro.
A lista a seguir descreve o fluxo do
ciclo de vida de UrlRequest
:
- O ciclo de vida fica no estado Started depois que o app chama o
método
start()
.
- O servidor pode enviar uma resposta de redirecionamento, que leva o fluxo para o
método
onRedirectReceived()
. Nesse método, é possível realizar uma das seguintes ações do cliente:
- Siga o redirecionamento usando
followRedirect()
.
Esse método move a solicitação de volta ao estado Started.
- Cancelar a solicitação usando
cancel()
.
Ele envia a solicitação ao método
onCanceled()
,
em que o app pode executar outras operações antes que a solicitação
seja movida para o estado final Cancelado.
- Depois que o app seguir todos os redirecionamentos, o servidor enviará os cabeçalhos
de resposta e o método
onResponseStarted()
será chamado. A solicitação está no estado Waiting for read(). O app
precisa chamar o método read()
para tentar ler parte do corpo da resposta. Depois que read()
é
chamado, a solicitação fica no estado de leitura, em que há os
seguintes resultados possíveis:
- A ação de leitura foi concluída, mas há mais dados disponíveis. O
onReadCompleted()
é chamado, e a solicitação fica no estado Aguardando read() novamente.
O app precisa chamar o método
read()
novamente para continuar lendo o corpo da resposta. O app também
pode interromper a leitura da solicitação usando o
método cancel()
.
- A ação de leitura foi concluída e não há mais dados disponíveis.
O método
onSucceeded()
é chamado, e a solicitação agora está no estado final
Succeeded.
- Falha da ação de leitura. O método
onFailed
é chamado, e o estado final da solicitação agora é Falha.
O diagrama a seguir mostra o ciclo de vida de um objeto
UrlRequest
:

O ciclo de vida de solicitação da Cronet
Legenda |
|
estado inicial |
estado final |
estado de transição |
métodos de callback |
métodos UrlRequest |
|
O conteúdo e os exemplos de código nesta página estão sujeitos às licenças descritas na Licença de conteúdo. Java e OpenJDK são marcas registradas da Oracle e/ou suas afiliadas.
Última atualização 2025-07-27 UTC.
[null,null,["Última atualização 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 | |"]]