Ciclo de vida da solicitação do Cronet

Saiba mais sobre o ciclo de vida das solicitações criadas com a Cronet e como gerenciá-las usando os métodos de callback fornecidos pela biblioteca.

Visão geral do ciclo de vida

A classe UrlRequest representa solicitações de rede criadas usando a biblioteca Cronet. Os conceitos a seguir 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 com 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 retorna a solicitação ao estado Iniciado.
    • Cancelar a solicitação usando cancel(). Esse método leva a solicitação ao método onCanceled(), em que o app pode realizar outras operações antes que a solicitação passe para o estado final Cancelado.
  3. Depois que o app segue todos os redirecionamentos, o servidor envia os cabeçalhos de resposta, e o Cronet chama o método onResponseStarted(). A solicitação está no estado Aguardando read(). O app precisa chamar o método read() para tentar ler parte do corpo da resposta. Depois que o app chama read(), a solicitação fica no estado Reading, em que há os seguintes resultados possíveis:
    • A ação de leitura é bem-sucedida, e há mais dados disponíveis. O Cronet chama o método onReadCompleted(), e a solicitação volta ao estado Waiting for read(). O app pode 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 é bem-sucedida, e não há mais dados disponíveis. O Cronet chama o método onSucceeded(), e a solicitação fica no estado final Succeeded.
    • A ação de leitura falha. O Cronet chama o método onFailed(), e o estado final da solicitação é Failed.

O diagrama a seguir mostra o ciclo de vida de um objeto UrlRequest:

Diagrama do ciclo de vida da solicitação da Cronet
Ciclo de vida da 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