Cronet Request生命周期

了解Cronet创建的请求(Request)的生命周期,

学习如何使用回调函数(Callback)管理这些生命周期。

生命周期概述

Cronet库创建的网络请求使用UrlRequest类来描述。理解UrlRequest的生命周期的一些非常重要的概念如下:

  • 状态(State): 状态是请求在某一时间进入的特定条件。在生命周期中,Cronet库创建的UrlRequest 对象在不同状态之间切换。请求生命周期状态包括:初始化状态、多种过度状态和终止状态。
  • 行为方法 UrlRequest methods: 客户端请求在不同状态可以调用不同的方法。这些方法可以将一个状态切换到另一个状态。
  • 回调函数 Callback methods:通过实现UrlRequest.Callback类的方法,你的APP可以与请求的进度保持一致,也可以通过实现这些回调函数调用请求的行为方法,将一个状态切换到另一个状态。

下面列表描述了UrlRequest生命周期的流程:

  1. APP调用started()函数后,生命周期处于开始状态(Started)。
  2. 服务端调用发送链接跳转响应后,进入onRedirectReceived()回调函数。在这个函数中可以执行两个行为函数: a. 调用followRedirect(),然后重新进入开始状态(Started)。 b. 调用cancel(),进入onCanceled()函数,app在请求进入已取消(Canceled )状态之前还可以执行其他的操作。
  3. ​​​当app所有url跳转执行完后,服务端发送响应头信息,onResponseStarted()函数会被调用。请求进入等待读Waiting for read() )状态。app应该调用read()方法读取响应体。read()方法调用后,进入读取中状态(Reading),然后可能会遇到下面集中情况:
  • 读取行为完成,还有更多数据可读时:onReadCompleted()会被调用,然后再次进入等待读状态Waiting for read())。app应该执行read()继续读响应体。app也可以执行cancal()函数停止读取。
  • 读取行为完成,没有更多数据可读时:onSucceeded()会被调用,请求进入最终的完成(Succeeded)状态。
  • 读取行为出错时:onFailed会被调用,然后请求进入最终的出错(Failed)状态。

下表展示了UrlRequest对象的整个生命周期:

Cronet Request生命周期_第1张图片

其中:

Cronet Request生命周期_第2张图片

原文地址:

https://developer.android.com/guide/topics/connectivity/cronet/lifecycle#overview

你可能感兴趣的:(Network)