了解Cronet创建的请求(Request)的生命周期,
学习如何使用回调函数(Callback)管理这些生命周期。
生命周期概述
Cronet库创建的网络请求使用UrlRequest类来描述。理解
UrlRequest的生命周期的一些非常重要的概念如下:
- 状态(State): 状态是请求在某一时间进入的特定条件。在生命周期中,Cronet库创建的UrlRequest 对象在不同状态之间切换。请求生命周期状态包括:初始化状态、多种过度状态和终止状态。
行为方法 UrlRequest
methods: 客户端请求在不同状态可以调用不同的方法。这些方法可以将一个状态切换到另一个状态。回调函数 Callback
methods:通过实现UrlRequest.Callback类的方法,你的APP可以与请求的进度保持一致,也可以通过实现这些回调函数调用请求的行为方法,将一个状态切换到另一个状态。
下面列表描述了UrlRequest生命周期的流程:
- APP调用started()函数后,生命周期处于开始状态(Started)。
- 服务端调用发送链接跳转响应后,进入
onRedirectReceived()回调函数。在这个函数中可以执行两个行为函数:
a. 调用followRedirect(),然后重新进入
开始状态(Started)。 b.
调用cancel(),进入onCanceled()函数,app在请求进入已取消(
Canceled)状态之前还可以执行其他的操作。
当app所有url跳转执行完后,服务端发送响应头信息,onResponseStarted()函数会被调用。请求进入等待读(
Waiting for read())状态。app应该调用read()方法读取响应体。read()方法调用后,进入读取中状态(
Reading),然后可能会遇到下面集中情况:
- 读取行为完成,还有更多数据可读时:
onReadCompleted()会被调用,然后再次进入等待读状态(
Waiting for read())。app应该执行read()继续读响应体。app也可以执行cancal()函数停止读取。
- 读取行为完成,没有更多数据可读时:
onSucceeded()会被调用,请求进入最终的完成(
Succeeded)状态。
- 读取行为出错时:
onFailed会被调用,然后请求进入最终的出错(
Failed)状态。
下表展示了UrlRequest对象的整个生命周期:
其中:
原文地址:
https://developer.android.com/guide/topics/connectivity/cronet/lifecycle#overview