OkHttpClient參數(shù)設(shè)置

OkHttpClient.Builder默認(rèn)參數(shù)

public Builder() {
    // dispatch。負(fù)責(zé)分配處理異步任務(wù)
    this.dispatcher = new Dispatcher();
    // 支持的協(xié)議鸟妙,默認(rèn)支持http2和http1.1
    this.protocols = OkHttpClient.DEFAULT_PROTOCOLS;
    // 指定socket鏈接配置昏鹃。默認(rèn):MODERN_TLS和CLEARTEXT
    this.connectionSpecs = OkHttpClient.DEFAULT_CONNECTION_SPECS;
    // 監(jiān)聽http請(qǐng)求過(guò)程中涉及的各種事件完沪。包括:開始請(qǐng)求、dns解析開始/結(jié)束咐旧、鏈接開始等等。默認(rèn)是的Listener
    this.eventListenerFactory = EventListener.factory(EventListener.NONE);
    // 設(shè)置代理
    this.proxySelector = ProxySelector.getDefault();
    // 設(shè)置cookie
    this.cookieJar = CookieJar.NO_COOKIES;
    // 設(shè)置創(chuàng)建Socket鏈接的Factory
    this.socketFactory = SocketFactory.getDefault();
    // 驗(yàn)證域名和證書的域名是否匹配
    this.hostnameVerifier = OkHostnameVerifier.INSTANCE;
    // 設(shè)置信任的證書,不信任之外的證書沛善,默認(rèn)是空的
    this.certificatePinner = CertificatePinner.DEFAULT;
    // 與身份認(rèn)證有關(guān)。詳見:https://square.github.io/okhttp/3.x/okhttp/okhttp3/Authenticator.html
    this.proxyAuthenticator = Authenticator.NONE;
    // 與身份認(rèn)證有關(guān)塞祈。詳見:https://square.github.io/okhttp/3.x/okhttp/okhttp3/Authenticator.html
    this.authenticator = Authenticator.NONE;
    // 連接池-緩存鏈接和清理空閑的連接
    this.connectionPool = new ConnectionPool();
    // 域名解析
    this.dns = Dns.SYSTEM;
    // 是否支持ssl重定向
    this.followSslRedirects = true;
    // 是否支持重定向
    this.followRedirects = true;
    // 失敗后是否重試
    this.retryOnConnectionFailure = true;
    // 鏈接超時(shí)時(shí)間
    this.connectTimeout = 10000;
    // 讀超時(shí)時(shí)間
    this.readTimeout = 10000;
    // 寫超時(shí)時(shí)間
    this.writeTimeout = 10000;
    // ping的時(shí)間間隔路呜。如果使用WebSocket請(qǐng)求設(shè)置pingInterval,以保活
    this.pingInterval = 0;
}

Dispatcher-任務(wù)調(diào)度器

public final class Dispatcher {
    // 最大的異步請(qǐng)求數(shù)
    private int maxRequests = 64;
    // 單個(gè)host最大的請(qǐng)求數(shù)
    private int maxRequestsPerHost = 5;
    @Nullable
    private Runnable idleCallback;
    @Nullable
    // 執(zhí)行異步請(qǐng)求的線程池
    private ExecutorService executorService;
    // 尚未執(zhí)行的請(qǐng)求
    private final Deque<AsyncCall> readyAsyncCalls = new ArrayDeque();
    // 正在執(zhí)行的異步請(qǐng)求
    private final Deque<AsyncCall> runningAsyncCalls = new ArrayDeque();
    // 正在執(zhí)行的同步請(qǐng)求
    private final Deque<RealCall> runningSyncCalls = new ArrayDeque();
    // 設(shè)置異步線程池
    public Dispatcher(ExecutorService executorService) {
        this.executorService = executorService;
    }
    public Dispatcher() {
    }
    public synchronized ExecutorService executorService() {
        if (this.executorService == null) {
            // 默認(rèn)的異步線程池
            this.executorService = new ThreadPoolExecutor(0, 2147483647, 60L, TimeUnit.SECONDS, new SynchronousQueue(), Util.threadFactory("OkHttp Dispatcher", false));
        }
        return this.executorService;
    }
    // 異步任務(wù)胀葱,判斷異步任務(wù)數(shù)和單個(gè)host的請(qǐng)求數(shù)
    synchronized void enqueue(AsyncCall call) {
        if (this.runningAsyncCalls.size() < this.maxRequests && this.runningCallsForHost(call) < this.maxRequestsPerHost) {
            this.runningAsyncCalls.add(call);
            this.executorService().execute(call);
        } else {
            this.readyAsyncCalls.add(call);
        }
    }
}

ConnectionTool-緩存鏈接和清理空閑的連接

public final class ConnectionPool {
    // 負(fù)責(zé)清理空閑連接的線程池
    private static final Executor executor;
    // 最大空閑的連接數(shù)-默認(rèn)值:5
    private final int maxIdleConnections;
    // 最大的空閑時(shí)間-默認(rèn)值:5分鐘
    private final long keepAliveDurationNs;
    // 負(fù)責(zé)清理空閑連接的Runnable
    private final Runnable cleanupRunnable;
    // 所有的連接
    private final Deque<RealConnection> connections;
    final RouteDatabase routeDatabase;
    boolean cleanupRunning;
    
    public ConnectionPool() {
        this(5, 5L, TimeUnit.MINUTES);
    }
    
    public ConnectionPool(int maxIdleConnections, long keepAliveDuration, TimeUnit timeUnit) {
        ////
    }
    
    static {
        // 負(fù)責(zé)清理空閑連接的線程池
        executor = new ThreadPoolExecutor(0, 2147483647, 60L, TimeUnit.SECONDS, new SynchronousQueue(), Util.threadFactory("OkHttp ConnectionPool", true));
    }
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末漠秋,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子抵屿,更是在濱河造成了極大的恐慌庆锦,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,194評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件轧葛,死亡現(xiàn)場(chǎng)離奇詭異搂抒,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)尿扯,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,058評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門求晶,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人衷笋,你說(shuō)我怎么就攤上這事芳杏。” “怎么了辟宗?”我有些...
    開封第一講書人閱讀 156,780評(píng)論 0 346
  • 文/不壞的土叔 我叫張陵爵赵,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我泊脐,道長(zhǎng)空幻,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,388評(píng)論 1 283
  • 正文 為了忘掉前任容客,我火速辦了婚禮秕铛,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘缩挑。我一直安慰自己如捅,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,430評(píng)論 5 384
  • 文/花漫 我一把揭開白布调煎。 她就那樣靜靜地躺著镜遣,像睡著了一般。 火紅的嫁衣襯著肌膚如雪士袄。 梳的紋絲不亂的頭發(fā)上悲关,一...
    開封第一講書人閱讀 49,764評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音娄柳,去河邊找鬼寓辱。 笑死,一個(gè)胖子當(dāng)著我的面吹牛赤拒,可吹牛的內(nèi)容都是我干的秫筏。 我是一名探鬼主播诱鞠,決...
    沈念sama閱讀 38,907評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼这敬!你這毒婦竟也來(lái)了航夺?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,679評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤崔涂,失蹤者是張志新(化名)和其女友劉穎阳掐,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體冷蚂,經(jīng)...
    沈念sama閱讀 44,122評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡缭保,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,459評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了蝙茶。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片艺骂。...
    茶點(diǎn)故事閱讀 38,605評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖隆夯,靈堂內(nèi)的尸體忽然破棺而出钳恕,到底是詐尸還是另有隱情,我是刑警寧澤吮廉,帶...
    沈念sama閱讀 34,270評(píng)論 4 329
  • 正文 年R本政府宣布苞尝,位于F島的核電站畸肆,受9級(jí)特大地震影響宦芦,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜轴脐,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,867評(píng)論 3 312
  • 文/蒙蒙 一调卑、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧大咱,春花似錦恬涧、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,734評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至厦瓢,卻和暖如春提揍,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背煮仇。 一陣腳步聲響...
    開封第一講書人閱讀 31,961評(píng)論 1 265
  • 我被黑心中介騙來(lái)泰國(guó)打工劳跃, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人浙垫。 一個(gè)月前我還...
    沈念sama閱讀 46,297評(píng)論 2 360
  • 正文 我出身青樓刨仑,卻偏偏與公主長(zhǎng)得像郑诺,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子杉武,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,472評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容

  • 在日常開發(fā)中網(wǎng)絡(luò)請(qǐng)求是很常見的功能辙诞。OkHttp作為Android開發(fā)中最常用的網(wǎng)絡(luò)請(qǐng)求框架,在Android開發(fā)...
    maoqitian閱讀 1,167評(píng)論 1 11
  • 1. HttpClient與HttpUrlConnection的區(qū)別 簡(jiǎn)而言之:就是Volley的的請(qǐng)求方式(AP...
    Sincerity_閱讀 652評(píng)論 0 0
  • rxjava是如何實(shí)現(xiàn)線程切換的 glide對(duì)比其他圖片加載框架的優(yōu)勢(shì) 熱修復(fù)原理 kotlin協(xié)程 mvp mv...
    SlideException閱讀 232評(píng)論 0 0
  • 不開心艺智,就算長(zhǎng)生不老也沒(méi)用倘要,開心,就算只能活幾天也足夠十拣!——《大話西游之月光寶盒》 前言 本文從源碼角度分析OkH...
    尹天酬閱讀 702評(píng)論 0 4
  • 推薦指數(shù): 6.0 書籍主旨關(guān)鍵詞:特權(quán)封拧、焦點(diǎn)、注意力夭问、語(yǔ)言聯(lián)想泽西、情景聯(lián)想 觀點(diǎn): 1.統(tǒng)計(jì)學(xué)現(xiàn)在叫數(shù)據(jù)分析,社會(huì)...
    Jenaral閱讀 5,705評(píng)論 0 5