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()方法尝试读取部分响应正文。调用read()后,请求处于**读取中**状态,可能有以下几种结果:
    • 读取操作成功,但还有更多数据可用。onReadCompleted()被调用,请求再次处于**等待 read()**状态。应用应再次调用read()方法以继续读取响应正文。应用还可以使用cancel()方法停止读取请求。
    • 读取操作成功,并且没有更多数据可用。onSucceeded()方法被调用,请求现在处于**已成功**最终状态。
    • 读取操作失败。onFailed方法被调用,请求的最终状态现在为**已失败**。

下图显示了UrlRequest对象的生命周期。

Cronet request lifecycle
diagram
Cronet 请求生命周期

图例
Cronet 初始状态图例图标 初始状态 Cronet 最终状态图例图标 最终状态
Cronet 过渡状态图例图标 过渡状态 Cronet 回调方法图例图标 回调方法
Cronet 客户端操作图例图标 UrlRequest 方法