Ciclo de vida da solicitação da 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 usando a Biblioteca Cronet são representadas pela classe UrlRequest. Os conceitos a seguir são importantes para entender o ciclo de vida de 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 estados diferentes durante o 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, o 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 movem o ciclo de vida de um estado para outro.

A lista a seguir descreve o fluxo do ciclo de vida UrlRequest:

  1. O ciclo de vida estará no estado Started depois que o aplicativo chamar o método start().
  2. O servidor pode enviar uma resposta de redirecionamento, que move o fluxo para o método onRedirectReceived(). Neste método, você pode realizar uma das seguintes ações do cliente:
    • Seguir o redirecionamento usando followRedirect(). Esse método move a solicitação de volta ao estado Started.
    • Cancelar a solicitação usando cancel(). Esse método move a solicitação para método onCanceled(), no qual o app pode executar operações adicionais antes de a solicitação ser movida para o estado final Canceled.
  3. Depois que o app segue todos os redirecionamentos, o servidor envia os cabeçalhos de resposta e o método onResponseStarted() é chamado. A solicitação está no estado Waiting for read(). O app deve chamar o método read() para tentar ler parte do corpo da resposta. Depois que read() for chamado, a solicitação estará no estado Reading, onde 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 estará no estado Waiting for read() novamente. O app deve chamar o método read() novamente para continuar lendo o corpo da resposta. O app também pode parar de ler a 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 é Failed.

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 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