volley淺析

volley是google在2013年推出的一個多線程網絡訪問框架。想了解更多的能夠google,下面切入正題,來講說volley的整個框架思想和結構。
1、android網絡服務場景
在android應用中,網絡請求做爲最經常使用的功能之一

一、請求協議類型多樣化:http、https、socket;android

 

二、請求方式(針對部分協議)多樣化:options、head、get、post、put、delete、trace、connect;緩存


三、請求的參數類型與響應數據類型多樣;網絡

 

四、多請求同時併發;多線程

 

五、對請求的健壯性要求較高,要保證請求執行的性能、請求結果及時反饋與相應異常處理;併發

 

六、需對請求任務生命週期和所佔資源進行管理(與activity和fragment生命週期聯動),以確保性能與程序的穩定性。框架

 

2、Volley核心是對Request的分發與處理,在結構上主要面向接口構建,注重自身的輕便性與功能擴展的靈活性。
簡要分析下整個請求流程:socket


一、UI Thread 建立Request、設置Request的優先級並將Request添加到RequestQueue中進行相關處理;post

 

二、在RequestQueue中,會根據Request的是否可緩存將Request放到真正的隊列CacheQueue或NetworkQueue;性能

 

三、CacheDispatcher從CacheQueue中根據優先級循環取出Request,而後查詢緩存,若是有可用緩存則用Delivery將Request和Response一塊兒返回給UI Thread,若是沒有有效緩存則將Request從新添加到NetworkQueue中;
google

 

四、NetworkDispatcher從NetworkQueue中根據優先級取出Request進行網絡請求,請求完成後若是失敗則根據RetryPolicy進行從新請求嘗試,若是成功則進行相應緩存處理並用Delivery將Request和Response一塊兒返回給UI Thread;
這裏面還有其它的相關處理,好比Request中斷處理,這裏就不一一詳述了。

 

3、Volley應用方式

這個主要在toolbox下,google將一些通用的實現放在這個裏面,一方面起到示範做用,一方面對於普通需求都可以知足。咱們能夠根據業務定製本身的實現。我的認爲這一點正是這個框架思想的精髓。

相關文章
相關標籤/搜索