了解使用 Cronet 创建的请求的生命周期,以及如何使用库提供的回调方法来管理它们。
生命周期概述
使用 Cronet 库创建的网络请求由 UrlRequest
类表示。要了解 UrlRequest
生命周期,需要了解以下概念
- 状态
- 状态是指请求在特定时间所处的特定条件。使用 Cronet 库创建的 UrlRequest 对象在其生命周期中会经历不同的状态。请求生命周期包括初始状态,以及多个过渡状态和最终状态。
UrlRequest
方法- 客户机可以根据状态在
UrlRequest
对象上调用特定方法。这些方法会将请求从一个状态转移到另一个状态。 Callback
方法- 通过实现
UrlRequest.Callback
类的 методод,您的应用程序可以接收有关请求进度的更新。您可以实现回调方法来调用UrlRequest
对象的方法,这些方法将生命周期从一个状态转移到另一个状态。
以下列表描述了 UrlRequest
生命周期的工作流程
- 在您的应用程序调用
start()
方法后,生命周期将处于 已启动 状态。 - 服务器可能会发送重定向响应,这将使工作流程进入
onRedirectReceived()
方法。在此方法中,您可以执行以下客户机操作之一- 使用
followRedirect()
跟踪重定向。此方法将请求返回到 已启动 状态。 - 使用
cancel()
取消请求。此方法将请求发送到onCanceled()
方法,应用程序可以在请求移至 已取消 终态之前执行其他操作。
- 使用
- 应用程序完成所有重定向后,服务器会发送响应头,并调用
onResponseStarted()
方法。请求处于 等待读取() 状态。应用程序应调用read()
方法以尝试读取部分响应主体。调用read()
后,请求处于 读取中 状态,此时可能出现以下结果- 读取操作成功,但还有更多数据可用。调用
onReadCompleted()
,请求再次进入 等待读取() 状态。应用程序应再次调用read()
方法以继续读取响应主体。应用程序也可以使用cancel()
方法停止读取请求。 - 读取操作成功,并且没有更多数据可用。调用
onSucceeded()
方法,请求现在处于 成功 终态。 - 读取操作失败。调用
onFailed
方法,请求的最终状态现在为 失败。
- 读取操作成功,但还有更多数据可用。调用
下图显示了 UrlRequest
对象的生命周期
图例 | |
---|---|
初始状态 | 终态 |
过渡状态 | 回调方法 |
UrlRequest 方法 |