鍍金池/ 問答/Android  網(wǎng)絡(luò)安全  HTML/ okhttp3的異步請(qǐng)求是怎樣回到主線程的

okhttp3的異步請(qǐng)求是怎樣回到主線程的

在源碼中,異步請(qǐng)求最后是由 Dispatcher.enqueue()方法執(zhí)行,里面?zhèn)魅肓艘粋€(gè)AsyncCall,實(shí)際上是一個(gè)runnable,這里使用了一個(gè)線程池來執(zhí)行這個(gè)runnable,但是在回調(diào)的時(shí)候怎么切換到主線程?我沒有翻到這部分源碼,哪位大佬能幫忙找一下,感激不盡?。?/p>

回答
編輯回答
旖襯
干脆用Retrofit
2017年11月11日 22:01
編輯回答
不歸路

enqueue執(zhí)行的時(shí)候不是要傳一個(gè)Callback responseCallback嗎,你在哪里傳的這個(gè)calback就是在什么線程執(zhí)行Callback里面的代碼

2017年4月16日 17:57
編輯回答
凝雅

之前造過這類輪子,印象里主要是下面這點(diǎn):

Handler h = new Handler(Looper.getMainLooper()) {
    @Override
    public void handleMessage(Message message) {
        // TODO
    }
}

現(xiàn)在用 h 發(fā)消息,handleMessage 就處于主線程了。

不清楚 Okhttp3 是不是這樣做的,你可以作為參考。
2017年8月29日 07:47
編輯回答
選擇

它沒有切換到主線程啊。你自己用主線程的Handler把結(jié)果拋出來

2018年8月27日 16:29