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 objetoUrlRequestque 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:
O ciclo de vida de solicitação da Cronet
| Legenda | |
|---|---|
UrlRequest |