Cronet 请求生命周期

了解使用 Cronet 创建的请求的生命周期,以及如何使用库提供的回调方法来管理它们。

生命周期概述

使用 Cronet 库创建的网络请求由 UrlRequest 类表示。要了解 UrlRequest 生命周期,需要了解以下概念

状态
状态是指请求在特定时间所处的特定条件。使用 Cronet 库创建的 UrlRequest 对象在其生命周期中会经历不同的状态。请求生命周期包括初始状态,以及多个过渡状态和最终状态。
UrlRequest 方法
客户机可以根据状态在 UrlRequest 对象上调用特定方法。这些方法会将请求从一个状态转移到另一个状态。
Callback 方法
通过实现 UrlRequest.Callback 类的 методод,您的应用程序可以接收有关请求进度的更新。您可以实现回调方法来调用 UrlRequest 对象的方法,这些方法将生命周期从一个状态转移到另一个状态。

以下列表描述了 UrlRequest 生命周期的工作流程

  1. 在您的应用程序调用 start() 方法后,生命周期将处于 已启动 状态。
  2. 服务器可能会发送重定向响应,这将使工作流程进入 onRedirectReceived() 方法。在此方法中,您可以执行以下客户机操作之一
    • 使用 followRedirect() 跟踪重定向。此方法将请求返回到 已启动 状态。
    • 使用 cancel() 取消请求。此方法将请求发送到 onCanceled() 方法,应用程序可以在请求移至 已取消 终态之前执行其他操作。
  3. 应用程序完成所有重定向后,服务器会发送响应头,并调用 onResponseStarted() 方法。请求处于 等待读取() 状态。应用程序应调用 read() 方法以尝试读取部分响应主体。调用 read() 后,请求处于 读取中 状态,此时可能出现以下结果
    • 读取操作成功,但还有更多数据可用。调用 onReadCompleted(),请求再次进入 等待读取() 状态。应用程序应再次调用 read() 方法以继续读取响应主体。应用程序也可以使用 cancel() 方法停止读取请求。
    • 读取操作成功,并且没有更多数据可用。调用 onSucceeded() 方法,请求现在处于 成功 终态。
    • 读取操作失败。调用 onFailed 方法,请求的最终状态现在为 失败

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

Cronet request lifecycle
diagram
Cronet 请求生命周期

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