Ciclo de vida da solicitação do Cronet

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:

  1. O ciclo de vida fica no estado Started depois que o app chama o método start().
  2. 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.
  3. 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:

Diagrama do ciclo de vida da
solicitação da Cronet
O ciclo de vida de solicitação da Cronet

Legenda
Ícone de legenda do estado inicial da Cronet estado inicial Ícone de legenda do estado final da Cronet estado final
Ícone de legenda do estado de transição da Cronet estado de transição Ícone de legenda dos métodos de callback da Cronet métodos de callback
Ícone de legenda da ação do cliente da Cronet métodos UrlRequest