Узнайте о жизненном цикле запросов, созданных с помощью Cronet, и о том, как управлять ими с помощью методов обратного вызова, предоставляемых библиотекой.
Обзор жизненного цикла
Сетевые запросы, созданные с помощью библиотеки Cronet, представлены классом UrlRequest . Следующие понятия важны для понимания жизненного цикла UrlRequest :
- Штаты
- Состояние — это особое состояние, в котором находится запрос в определенное время. Объекты UrlRequest, созданные с использованием библиотеки Cronet, в своем жизненном цикле проходят разные состояния. Жизненный цикл запроса включает начальное состояние, а также несколько переходных и конечных состояний.
- Методы
UrlRequest - Клиенты могут вызывать определенные методы объектов
UrlRequestв зависимости от состояния. Методы переводят запрос из одного состояния в другое. - Методы
Callback - Реализуя методы класса
UrlRequest.Callback, ваше приложение может получать обновления о ходе выполнения запроса. Вы можете реализовать методы обратного вызова для вызова методов объектаUrlRequest, которые переводят жизненный цикл из одного состояния в другое.
В следующем списке описан поток жизненного цикла UrlRequest :
- Жизненный цикл находится в состоянии «Начало» после того, как ваше приложение вызывает метод
start(). - Сервер может отправить ответ о перенаправлении, который передает поток методу
onRedirectReceived(). В этом методе вы можете выполнить одно из следующих действий клиента:- Следуйте за перенаправлением, используя
followRedirect(). Этот метод возвращает запрос в состояние «Начало» . - Отмените запрос с помощью
cancel(). Этот метод передает запрос в методonCanceled(), где приложение может выполнять дополнительные операции, прежде чем запрос будет переведен в конечное состояние «Отменено» .
- Следуйте за перенаправлением, используя
- После того как приложение выполняет все перенаправления, сервер отправляет заголовки ответа и вызывается метод
onResponseStarted(). Запрос находится в состоянии Ожидание чтения() . Приложение должно вызвать методread(), чтобы попытаться прочитать часть тела ответа. После вызоваread()запрос находится в состоянии чтения , где возможны следующие результаты:- Действие чтения прошло успешно, но доступно больше данных. Вызывается
onReadCompleted(), и запрос снова находится в состоянии ожидания чтения() . Приложению следует снова вызвать методread(), чтобы продолжить чтение тела ответа. Приложение также может прекратить чтение запроса с помощью методаcancel(). - Действие чтения прошло успешно, и доступных данных больше нет. Вызывается метод
onSucceeded(), и запрос теперь находится в конечном состоянии «Успешно» . - Действие чтения не удалось. Вызывается метод
onFailed, и окончательное состояние запроса теперь Failed .
- Действие чтения прошло успешно, но доступно больше данных. Вызывается
На следующей диаграмме показан жизненный цикл объекта UrlRequest :
Жизненный цикл запроса Cronet
| Легенда | |
|---|---|
UrlRequest |