Volley 原始碼分析

2021-07-11 13:41:11 字數 1573 閱讀 4251

http 網路請求到底是怎麼傳送

http 網路請求的響應是怎麼分發

volley 中關鍵的類之間的關係

關鍵的類:

1.http 網路請求怎麼傳送出去的?

requestqueue.add()、start()

requestqueue的 add 方法,把 reqeust 物件新增到 mcachequeue 佇列中

requestqueue的 start 方法,建立1個 cachedispatcher 和 4個 networkdispatcher,並啟動這些執行緒

/**

* adds a request to the dispatch queue.

* @param request the request to service

* @return the passed-in request

*/public requestadd(requestrequest)

...mcachequeue.add(request);

}return request;

}}public void start()

}

cachedispatcher.run()

1. 從cache佇列中取出請求物件

2. 處理請求

1. 判斷請求是否被取消,如果取消,請求的處理完成,否則走2

2. 從快取中獲取請求的響應資料

3. 判斷快取是非命中,如果沒有命中,把請求新增到網路請求佇列中,否則走4

4. 判斷快取是非過期,如果過期,把請求新增到網路請求佇列中,否則走5

5. 使用快取資料構建響應資料,networkresponse 物件

6. 使用 request.parsenetworkresponse 解析響應資料,得到 response 物件

7. 使用 responsedeliver 傳送響應結果

networkdispatcher.run()

1. 從cache佇列中取出請求物件

2. 處理請求

1. 判斷請求是否被取消,如果取消,請求的處理完成,否則走2

2. 使用 network.performreqeust() 去傳送 http 請求

3. 使用 httpstack.performreqeust() 去傳送 http 請求

4. 使用 httpclient 或者 httpurlconnection 去傳送 http 請求

5. 使用 request.parsenetworkresponse 解析響應資料,得到 response 物件

6. 快取 response 物件的資料

7. 使用 responsedeliver 傳送響應結果

http 網路請求的響應是怎麼分發

1. executordelivery.postresponse()

Volley原始碼分析 請求處理

總結 本篇分析分析volley如何生成請求,如何處理請求,以及請求如何返回。從分析中學習再做元件時如何處理請求。生產者 消費者模型描述的是共享的緩衝區的兩類執行緒,一類是新增訊息的生產者,一類是處理訊息的消費者。而基本涉及到的多執行緒處理的均使用這個模型。比如glide,比如這邊文件分析的volle...

從原始碼的角度理解Volley

今天從原始碼的角度來理解一下volley中部分功能的實現。新增請求到請求佇列 將請求新增到請求佇列中 public requestadd requestrequest 為請求設定順序編號.request.setsequence getsequencenumber 新增標記 request.addma...

spring原始碼分析 spring原始碼分析

1.spring 執行原理 spring 啟動時讀取應用程式提供的 bean 配置資訊,並在 spring 容器中生成乙份相應的 bean 配置登錄檔,然後根據這張登錄檔例項化 bean,裝配好 bean 之間的依賴關係,為上 層應用提供準備就緒的執行環境。二 spring 原始碼分析 1.1spr...