volley-core3

Volley第四部分

4.2.30 ClearCacheRequest.java

用于人为清空Http缓存的请求。
添加到RequestQueue后能很快执行,因为优先级比较高,为Priority.IMMEDIATE.
并且清空缓存的方法mCache.clear() 写在了isCancled()方法体中,
能最早的得到执行。

ClearCacheRequest的写法不敢苟同,目前看来唯一的好处就是可以将清空缓存操作也当做一个请求。
而在isCanceled()中做清空操作本身就造成了歧义,不看源码没人知道在NetworkDispatcher run方法
循环的过程中,isCanceled() 这个读操作竟然做了可能造成缓存被清空。只能跟源码的解释一样
当作一个Hack操作。

4.2.31 Authenticator.java

身份认证接口,用于基本认证或者摘要认证,这个类是Volley用于和身份验证打通的接口,
比如OAuth, 不过目前的使用不是特别广泛和volley的内部结合也不是特别紧密。

4.2.32 AndroidAuthenticator.java

继承Authenticator, 基于Android AccountManager的认证交互实现类。

4.2.33 VolleyLog.java

Volley 的log工具类。

4.2.34 VolleyError.java

volley 中所以错误异常的父类,继承自Expection,可通过此类设置和获取NetworkResponse
或者请求的耗时。

4.2.35 AuthFailureError.java

继承与VolleyError,代表请求认证失败错误,如ResponseCode的401,403.

4.2.36 NetworkError.java

继承自 VolleyError,代表网络错误

4.2.37 ParseError.java

继承自 VolleyError,代表内容解析错误

4.2.38 ServerError.java

继承自 VolleyError,代表服务端错误

4.2.39 TimeoutError.java

继承自 VolleyError,代表请求超时错误。

4.2.40 NoConnectionError.java

继承自 NetworkError,代表无法建立连接错误

一些值得思考的地方

5.1 关于Http缓存

Volley 构建了一套相对完整的符合Http语义的缓存机制。

优点和特点:
  1. 根据Cache-Control和Expires首部来计算缓存的过期时间,
    如果两个首部都存在情况下,以Cache-Control为准。
  2. 利用If-None-Match和If-Modified-Since对过期缓存或者不新鲜缓存,
    进行请求再验证,并处理 304 响应,更新缓存。
  3. 默认的缓存实现,将缓存以文件的形式存储在 Disk,程序退出后不会丢失
注意些:

THE END