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

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

其目的是允許底層代碼調(diào)用在高層定義的子程序。
舉個(gè)例子可能更明白一些:以Android中用retrofit進(jìn)行網(wǎng)絡(luò)請(qǐng)求為例,這個(gè)是異步回調(diào)的一個(gè)例子。
在發(fā)起網(wǎng)絡(luò)請(qǐng)求之后,app可以繼續(xù)其他事情,網(wǎng)絡(luò)請(qǐng)求的結(jié)果一般是通過onResponse與onFailure這兩個(gè)方法返回得到。看一下相關(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這兩個(gè)方法就是回調(diào)方法。底層的代碼就是已經(jīng)寫好不變的網(wǎng)絡(luò)請(qǐng)求部分,高層定義的子程序就是回調(diào),因?yàn)榫唧w的實(shí)現(xiàn)交給了使用者,所以具備了很高的靈活性。上面就是通過enqueue(Callback callback)這個(gè)方法來關(guān)聯(lián)起來的。

網(wǎng)友評(píng)論