回调在维基百科中定义为:
在计算机程序设计中,回调函数,是指通过函数参数传递到其他代码的,某一块可执行代码的引用。
其目的是允许底层代码调用在高层定义的子程序。
举个例子可能更明白一些:以Android中用retrofit进行网络请求为例,这个是异步回调的一个例子。
在发起网络请求之后,app可以继续其他事情,网络请求的结果一般是通过onResponse与onFailure这两个方法返回得到。看一下相关部分的代码:
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中的泛型,按照维基百科中的定义,匿名内部类里面的全部代码可以看成函数参数传递到其他代码的,某一块可执行代码的引用。 onResponse与onFailure这两个方法就是回调方法。底层的代码就是已经写好不变的网络请求部分,高层定义的子程序就是回调,因为具体的实现交给了使用者,所以具备了很高的灵活性。上面就是通过enqueue(Callback callback)这个方法来关联起来的。
