簡介:Volley 是 Google 推出的 Android 異步網絡要求框架和圖片加載框架。在 Google I/O 2013 大會上發布。
Volley 的特點:特別合適數據量小,通訊頻繁的網絡操作。
首先從與框架同名的Volley.java開始分析,文件位于toolbox。該類主要用于建立1個新的要求隊列RequestQueue,方法有兩個分別是:
newRequestQueue(Context context, HttpStack stack)
newRequestQueue(Context context)
1.傳入Context時,調用newRequestQueue(context, null),然后根據DEFAULT_CACHE_DIR定義緩存文件名。
2.然后根據系統版本號,sdk大于9時使用HurlStack( HttpUrlConnection ),否則使用HttpClientStack( HttpClient ),然后將Stack傳入Network,Network可以調用Stack處理要求,然后將結果轉換成NetworkResponse
3.然后將定義的Network和緩存目錄傳入RequestQueue(Cache cache, Network network),根據默許的DEFAULT_NETWORK_THREAD_POOL_SIZE線程池大小常量去新建要求隊列。
4.最后開啟要求隊列,履行start()方法,該方法會產生根據線程池大小產生對應數量的網絡隊列及緩存隊列
5.創建完成1個要求隊列后,每次調用只需要將自定義的Request通過add()方法傳入,要求將會被添加到mCurrentRequests,該Set用于存儲當前正在處理的要求,接著根據要求的shouldCache()方法判斷是不是需要進行緩存,如果不需要則直接放入網絡隊列,否則根據Url將要求放入緩存隊列。
6.緩存調度器CacheDispatcher會從緩存隊列中取出要求,然后根據CacheKey獲得緩存,如果獲得失敗則放入網絡隊列中去處理,否則進行驗證有效期等,最后將處理結果交由ResponseDelivery,他是返回結果分發接口,用于分發返回的結果
7.網絡調度器NetworkDispatcher會從網絡隊列中取出要求,然后處理完成交由ResponseDelivery分發處理結果。
最后附上Volley的要求流程圖
下一篇 如何為類別增加變量?