1.1 Android volley通過(guò)網(wǎng)絡(luò)請(qǐng)求圖片流程

VolleyRequestImage
1.2.1 ImageLoader的get方法
- 首先
ImageCache緩存中查找 - 緩存不存在則
a. 創(chuàng)建ImageContainer,設(shè)置回調(diào)imageview的ImageListener
b. 通知ImageView設(shè)置默認(rèn)的Bitmap - 創(chuàng)建
ImageRequest - 以
cachekey保存在mInFlightRequests中,value為BatchedImageRequest
1.2.2 RequestQueue的add方法
添加request到requestqueue,如果request不可緩存,則添加到mNetworkQueue由NetworkDispatcher線程執(zhí)行網(wǎng)絡(luò)調(diào)度;
否則添加到由添加mCacheQueue由CacheDispatcher調(diào)度,如果緩存為空或者過(guò)期則重新發(fā)送到mNetworkQueue;
1.2.3 Other
BasicNetWork交給HttpStack負(fù)責(zé)網(wǎng)絡(luò)請(qǐng)求相關(guān);
ExecutorDelivery通過(guò)引用線程的Handler根據(jù)response的結(jié)果分發(fā)給對(duì)應(yīng)的request;
ImageLoader創(chuàng)建ImageRequest時(shí),為其設(shè)置了Response.Listener監(jiān)聽(tīng)實(shí)現(xiàn);
ImageRequest將結(jié)果發(fā)送給所有其mBatchedResponses持有的所有BatchedImageRequest;