Жизненный цикл запроса Cronet

Узнайте о жизненном цикле запросов, созданных с помощью Cronet, и о том, как управлять ими с помощью методов обратного вызова, предоставляемых библиотекой.

Обзор жизненного цикла

Сетевые запросы, созданные с помощью библиотеки Cronet, представлены классом UrlRequest . Следующие понятия важны для понимания жизненного цикла UrlRequest :

Штаты
Состояние — это особое состояние, в котором находится запрос в определенное время. Объекты UrlRequest, созданные с использованием библиотеки Cronet, в своем жизненном цикле проходят разные состояния. Жизненный цикл запроса включает начальное состояние, а также несколько переходных и конечных состояний.
Методы UrlRequest
Клиенты могут вызывать определенные методы объектов UrlRequest в зависимости от состояния. Методы переводят запрос из одного состояния в другое.
Методы Callback
Реализуя методы класса UrlRequest.Callback , ваше приложение может получать обновления о ходе выполнения запроса. Вы можете реализовать методы обратного вызова для вызова методов объекта UrlRequest , которые переводят жизненный цикл из одного состояния в другое.

В следующем списке описан поток жизненного цикла UrlRequest :

  1. Жизненный цикл находится в состоянии «Начало» после того, как ваше приложение вызывает метод start() .
  2. Сервер может отправить ответ о перенаправлении, который передает поток методу onRedirectReceived() . В этом методе вы можете выполнить одно из следующих действий клиента:
    • Следуйте за перенаправлением, используя followRedirect() . Этот метод возвращает запрос в состояние «Начало» .
    • Отмените запрос с помощью cancel() . Этот метод передает запрос в метод onCanceled() , где приложение может выполнять дополнительные операции, прежде чем запрос будет переведен в конечное состояние «Отменено» .
  3. После того как приложение выполняет все перенаправления, сервер отправляет заголовки ответа и вызывается метод onResponseStarted() . Запрос находится в состоянии Ожидание чтения() . Приложение должно вызвать метод read() , чтобы попытаться прочитать часть тела ответа. После вызова read() запрос находится в состоянии чтения , где возможны следующие результаты:
    • Действие чтения прошло успешно, но доступно больше данных. Вызывается onReadCompleted() , и запрос снова находится в состоянии ожидания чтения() . Приложению следует снова вызвать метод read() , чтобы продолжить чтение тела ответа. Приложение также может прекратить чтение запроса с помощью метода cancel() .
    • Действие чтения прошло успешно, и доступных данных больше нет. Вызывается метод onSucceeded() , и запрос теперь находится в конечном состоянии «Успешно» .
    • Действие чтения не удалось. Вызывается метод onFailed , и окончательное состояние запроса теперь Failed .

На следующей диаграмме показан жизненный цикл объекта UrlRequest :

Диаграмма жизненного цикла запроса Cronet
Жизненный цикл запроса Cronet

Легенда
Значок легенды начального состояния Кронета исходное состояние Иконка последней легенды штата Кронет конечное состояние
Иконка легенды переходного государства Кронет переходное состояние Значок легенды методов обратного вызова Cronet методы обратного вызова
Значок легенды действий клиента Cronet Методы UrlRequest