如果我向同一个网址发出两个HTTP请求,一个只有HttpClient,另一个只有Volley,那么Volley请求需要更长的时间。
例如,在我的测试环境中:
这是一个示例Volley请求的日志转储:
11:44:14.766: D/Volley(863): [1] MarkerLog.finish: (773 ms) [ ] http://google.com 0xa46e044c NORMAL 1
11:44:14.766: D/Volley(863): [1] MarkerLog.finish: (+0 ) [ 1] add-to-queue
11:44:14.786: D/Volley(863): [1] MarkerLog.finish: (+0 ) [93] cache-queue-take
11:44:14.786: D/Volley(863): [1] MarkerLog.finish: (+7 ) [93] cache-hit-expired
11:44:14.796: D/Volley(863): [1] MarkerLog.finish: (+1 ) [97] network-queue-take
11:44:14.806: D/Volley(863): [1] MarkerLog.finish: (+722 ) [97] network-http-complete
11:44:14.806: D/Volley(863): [1] MarkerLog.finish: (+20 ) [97] network-parse-complete
11:44:14.816: D/Volley(863): [1] MarkerLog.finish: (+16 ) [97] network-cache-written
11:44:14.826: D/Volley(863): [1] MarkerLog.finish: (+0 ) [97] post-response
11:44:14.836: D/Volley(863): [1] MarkerLog.finish: (+7 ) [ 1] done
如您所见,瓶颈在于实际的HTTP请求。为什么这么慢?
答案 0 :(得分:1)
看起来Volley正在缓存您的回复。直接使用HttpClient不会缓存任何内容。
答案 1 :(得分:0)
Volley通常会缓存网络响应,这会使它变慢。如果您仍然想使用凌空抽射,则可以清除缓存以使其最终更快。
AppController.getInstance().getRequestQueue().getCache().remove(key);
您可以创建一个处理程序事件以每2分钟左右自动运行一次。希望有帮助:))