2017-03-18 48 views
0

我最近在想一個問題。如果每個請求都有改進實例,會發生什麼情況?

如果每個請求都有改進實例,會發生什麼情況?

我希望每個請求的原因有改裝實例:

改裝實例OkHttpClient實例,所以我想補充 攔截到OkhttpClient,但不是每個請求應是 截獲,我也想添加一些相同的頭文件 OkHttpClient,但不是每一個任務必須有這些相同的標頭,就像它的登錄請求時,我不需要添加令牌,但其他請求可能需要。

所以我的辦法是讓每一個請求已改裝實例,我以前有一個演示,但請求的數量都幾個,所以我不知道是否當有過多的請求會它來麻煩

我有2個問題:

將它做一些例外,否則會令棧溢出?

2.如果有更好的方法來解決這個問題?

有其他人有相同的經驗或有一些想法質疑?

+0

我使用單個OkHttpClient實例與攔截器,然後我使用SharedPreferences檢查在截距法登錄狀態。 – KTCO

回答

2

您可以使用@Headers註釋將靜態/動態標頭添加到Retrofit。此外,如在文檔說明你不應該創建單獨OkHttp例如:當您創建一個單一的OkHttpClient實例,並重新使用它爲所有的HTTP調用的

OkHttp性能最佳。這是因爲每個客戶端都擁有自己的連接池和線程池。重用連接和線程可減少延遲並節省內存。相反,爲每個請求創建一個客戶端會浪費空閒池上的資源。

如果你想爲每個OkHttp不同的配置只使用client.newBuilder()(可從3.x版):

您可以自定義共享OkHttpClient實例與newBuilder()。這將生成共享相同連接池,線程池和配置的客戶端。使用構建器方法爲特定目的配置派生客戶端。

如果@Headers是不適合你,就像你想創建不同Retrofit服務創建的OkHttpClient儘可能多的配置,你會沒事的。

http://square.github.io/okhttp/3.x/okhttp/

相關問題