回調(diào)在維基百科中定義為:

在計(jì)算機(jī)程序設(shè)計(jì)中,回調(diào)函數(shù),是指通過函數(shù)參數(shù)傳遞到其他代碼的,某一塊可執(zhí)行代碼的引用。

其目的是允許底層代碼調(diào)用在高層定義的子程序。
舉個例子可能更明白一些:以Android中用retrofit進(jìn)行網(wǎng)絡(luò)請求為例,這個是異步回調(diào)的一個例子。
在發(fā)起網(wǎng)絡(luò)請求之后,app可以繼續(xù)其他事情,網(wǎng)絡(luò)請求的結(jié)果一般是通過onResponse與onFailure這兩個方法返回得到。看一下相關(guān)部分的代碼:

call.enqueue(new Callback<HistoryBean>() { @Override public void onResponse(Call<HistoryBean> call, Response<HistoryBean> response) {
                HistoryBean hb = response.body(); if(hb == null) return;
                showText.append(hb.isError() + ""); for(HistoryBean.ResultsBean rb : hb.getResults()){
                    showText.append(rb.getTitle() + "/n");
                }
            } @Override public void onFailure(Call<HistoryBean> call, Throwable t) {

            }
        });

忽略上面CallBack中的泛型,按照維基百科中的定義,匿名內(nèi)部類里面的全部代碼可以看成函數(shù)參數(shù)傳遞到其他代碼的,某一塊可執(zhí)行代碼的引用。 onResponse與onFailure這兩個方法就是回調(diào)方法。底層的代碼就是已經(jīng)寫好不變的網(wǎng)絡(luò)請求部分,高層定義的子程序就是回調(diào),因?yàn)榫唧w的實(shí)現(xiàn)交給了使用者,所以具備了很高的靈活性。上面就是通過enqueue(Callback callback)這個方法來關(guān)聯(lián)起來的。

延伸閱讀

學(xué)習(xí)是年輕人改變自己的最好方式-Java培訓(xùn),做最負(fù)責(zé)任的教育,學(xué)習(xí)改變命運(yùn),軟件學(xué)習(xí),再就業(yè),大學(xué)生如何就業(yè),幫大學(xué)生找到好工作,lphotoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動軟件開發(fā)培訓(xùn),網(wǎng)站設(shè)計(jì)培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)學(xué)習(xí)是年輕人改變自己的最好方式