public interface Callback<T> extends Converter<T>
该类的回调具有如下顺序,虽然顺序写的很复杂,但是理解后,是很简单,并且合情合理的
1.无缓存模式CacheMode.NO_CACHE
---网络请求成功 onStart -> convertResponse -> onSuccess -> onFinish
---网络请求失败 onStart -> onError -> onFinish
2.默认缓存模式,遵循304头CacheMode.DEFAULT
---网络请求成功,服务端返回非304 onStart -> convertResponse -> onSuccess -> onFinish
---网络请求成功服务端返回304 onStart -> onCacheSuccess -> onFinish
---网络请求失败 onStart -> onError -> onFinish
3.请求网络失败后读取缓存CacheMode.REQUEST_FAILED_READ_CACHE
---网络请求成功,不读取缓存 onStart -> convertResponse -> onSuccess -> onFinish
---网络请求失败,读取缓存成功 onStart -> onCacheSuccess -> onFinish
---网络请求失败,读取缓存失败 onStart -> onError -> onFinish
4.如果缓存不存在才请求网络,否则使用缓存CacheMode.IF_NONE_CACHE_REQUEST
---已经有缓存,不请求网络 onStart -> onCacheSuccess -> onFinish
---没有缓存请求网络成功 onStart -> convertResponse -> onSuccess -> onFinish
---没有缓存请求网络失败 onStart -> onError -> onFinish
5.先使用缓存,不管是否存在,仍然请求网络CacheMode.FIRST_CACHE_THEN_REQUEST
---无缓存时,网络请求成功 onStart -> convertResponse -> onSuccess -> onFinish
---无缓存时,网络请求失败 onStart -> onError -> onFinish
---有缓存时,网络请求成功 onStart -> onCacheSuccess -> convertResponse -> onSuccess -> onFinish
---有缓存时,网络请求失败 onStart -> onCacheSuccess -> onError -> onFinish
| 限定符和类型 | 方法和说明 |
|---|---|
void |
downloadProgress(Progress progress)
下载过程中的进度回调,UI线程
|
void |
onCacheSuccess(Response<T> response)
缓存成功的回调,UI线程
|
void |
onError(Response<T> response)
请求失败,响应错误,数据解析错误等,都会回调该方法, UI线程
|
void |
onFinish()
请求网络结束后,UI线程
|
void |
onStart(Request<T,? extends Request> request)
请求网络开始前,UI线程
|
void |
onSuccess(Response<T> response)
对返回数据进行操作的回调, UI线程
|
void |
uploadProgress(Progress progress)
上传过程中的进度回调,get请求不回调,UI线程
|
convertResponse