簡(jiǎn)介
Volley是Android上面一個(gè)開(kāi)源的網(wǎng)絡(luò)框架,只是在應(yīng)用層面做了封裝泛烙,最終是調(diào)用系統(tǒng)自帶的HttpURLConnection (SDK >= 9)來(lái)執(zhí)行網(wǎng)絡(luò)請(qǐng)求案淋。Volley的源碼結(jié)構(gòu)清晰铅歼,值得學(xué)習(xí)和借鑒宦言。源碼地址:github.com/google/volley
源碼分析:
Volley默認(rèn)啟動(dòng)五個(gè)線程來(lái)處理請(qǐng)求塑陵,4個(gè)處理網(wǎng)絡(luò)請(qǐng)求(NetworkDispatcher),1個(gè)處理緩存邏輯(CacheDispatcher)蜡励。可以自己設(shè)置網(wǎng)絡(luò)線程數(shù)量阻桅。 每個(gè)線程維護(hù)一個(gè)PriorityBlockingQueue隊(duì)列凉倚,循環(huán)從請(qǐng)求隊(duì)列里面拉取Request執(zhí)行相應(yīng)任務(wù)。
Volley執(zhí)行完網(wǎng)絡(luò)請(qǐng)求回調(diào)回來(lái)的時(shí)候都是在UI線程嫂沉, 通過(guò)ExecutorDelivery構(gòu)造方法傳入的Handler來(lái)完成稽寒。
注意事項(xiàng)
Volley 本身沒(méi)有維護(hù)一個(gè)單例,不要每次請(qǐng)求都調(diào)用newRequestQueue趟章,需要APP自己封裝一個(gè)單例杏糙。