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 objetoUrlRequest
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étodoonCanceled()
, em que o app pode executar outras operações antes que a solicitação seja movida para o estado final Cancelado.
- Siga o redirecionamento usando
- 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étodoread()
para tentar ler parte do corpo da resposta. Depois queread()
é 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étodoread()
novamente para continuar lendo o corpo da resposta. O app também pode interromper a leitura da solicitação usando o métodocancel()
. - 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.
- A ação de leitura foi concluída, mas há mais dados disponíveis. O
O diagrama a seguir mostra o ciclo de vida de um objeto
UrlRequest
:
Legenda | |
---|---|
estado inicial | estado final |
estado de transição | métodos de callback |
métodos UrlRequest |