什么是回调函数(callback/listener)?
来源:http://www.zhihu.com/question/19801131
你到一个商店买东西,刚好你要的东西没有货,于是你在店员那里留下了你的电话,过了几天店里有货了,店员就打了你的电话,然后你接到电话后就到店里去取了货。
在这个例子里,你的电话号码就叫回调函数,你把电话留给店员就叫登记回调函数,店里后来有货了叫做触发了回调关联的事件,店员给你打电话叫做调用回调函数,你到店里去取货叫做响应回调事件。回答完毕。
/**
* 用来传输数据的回调接口;
*/
public interface DataListener{
void onDataComplete(String result);
}
/**
* 本类负责从服务器请求数据,然后把数据传递给相应的界面;
*/
public class DataFetcher{
private DataListener listener;
/**
* 注册监听器;
*/
public void setDataListener(DataListener listener){
this.listener = listener;
}
/**
* 从服务器请求数据,请求成功回调接口;
*/
public void getDataFromServer(){
new Thread(){
public void run(){
SystemClock.sleep(3000);
listener.onDataComplete("onDataComplete");
}
}.start();
}
}
public class MainActivity extends Activity implements DataListener{
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
DataFetcher fetcher = new DataFetcher();
fetcher.setDataListener(this);
fetcher.getDataFromServer();
}
@Override
public void onDataComplete(final String result){
this.runOnUiThread(new Runnable(){
@Override
public void run(){
updateUi(result);
}
});
}
private void updateUi(String result){
// update ui here
}
}
浙公网安备 33010602011771号