了解使用 Cronet 创建的请求的生命周期,以及如何使用该库提供的回调方法管理这些请求。
生命周期概览
UrlRequest 类表示使用 Cronet 库创建的网络请求。以下概念对于理解 UrlRequest 生命周期非常重要:
- 状态
- 状态是指请求在特定时间所处的特定情况。
使用 Cronet 库创建的
UrlRequest对象在其生命周期内会经历不同的状态。请求生命周期包括初始状态以及多个过渡状态和最终状态。 UrlRequest方法- 客户端可以根据状态对
UrlRequest对象调用特定方法。这些方法会将请求从一种状态转换为另一种状态。 Callback方法- 通过实现
UrlRequest.Callback类的方法,您的应用可以接收有关请求进度的更新。您可以实现回调方法,以调用UrlRequest对象的方法,从而将生命周期从一种状态切换到另一种状态。
以下列表介绍了 UrlRequest 生命周期的流程:
- 在应用调用
start()方法后,生命周期处于 Started 状态。 - 服务器可能会发送重定向响应,从而将流程转到
onRedirectReceived()方法。在此方法中,您可以执行以下任一客户端操作:- 使用
followRedirect()跟踪重定向。此方法会将请求恢复为已启动状态。 - 使用
cancel()取消请求。此方法会将请求发送到onCanceled()方法,应用可以在该方法中执行其他操作,然后再将请求移至 Canceled 最终状态。
- 使用
- 在应用遵循所有重定向后,服务器会发送响应标头,Cronet 会调用
onResponseStarted()方法。请求处于等待 read() 状态。应用必须调用read()方法,以尝试读取部分响应正文。在应用调用read()后,请求会处于 Reading 状态,此时可能会出现以下结果:- 读取操作成功,并且有更多数据可用。Cronet 会调用
onReadCompleted()方法,并且请求会再次处于等待 read() 状态。应用可以再次调用read()方法,以继续读取响应正文。应用还可以使用cancel()方法停止读取请求。 - 读取操作成功,并且没有更多可用数据。Cronet 会调用
onSucceeded()方法,并且请求处于 Succeeded 最终状态。 - 读取操作失败。Cronet 会调用
onFailed()方法,并且请求的最终状态为 Failed。
- 读取操作成功,并且有更多数据可用。Cronet 会调用
下图展示了 UrlRequest 对象的生命周期:
Cronet 请求生命周期
| 图例 | |
|---|---|
UrlRequest 方法 |