最近在做一些安卓开发相关的内容,相关内容也好好记录下,不再浅尝辄止。
看了下java的回调,又有了一些新的想法,该文章是看过相关文章后纯自己思考后所写(http://blog.youkuaiyun.com/xiaanming/article/details/8703708/)。
java回调其实简单理解就是调用者通过传给被调用者相关接口或函数,从而让被调用者在处理结束后,又反向调用调用者的api,这种情况下叫回调。
有同步和异步回调
1. 异步回调
例子很多,比如,a去通知b去做一件事情,比较耗时,b给a说,交给我吧,等我做好了再给通知你。
回调接口
public interface Callback{
public void solve_problem();
}
A
public class A implements Callback{
private B b;
public void call_help(){
new Thread(new Runnable(){
@Override
public void run(){
b.postmessage(A.this)
}
}).start();
}
@Override
public void solve_problem(){
}
}
B
public class B{
public void postmessage(CallBack callback){
//solve problem 后回调
callback.solve_problem()
}
}
上面说异步回调的方案。
同步方案
同步方案的话,安卓里面的button的回调就属于这种,以前对这个的理解模凌两可的,现在通过看相关文档彻底了解清楚了。
我们知道一般对button进行点击后的处理是通过button
setOnclickListener(new OnclickListener(){
@Overrid
public void onclick(){}
})
来做的,那我们就按这个来整理一遍
首先是需要相关的onclicklistener的接口
public interface OnclickListener{
public void Onclick(){};
}
其次,activity中进行相应的处理
public class Myacitivity extends Activity implements OnclickListener{
Button button;
@Override
OnCreate(){
button.setOnclickListener(this);
}
@Override
public void Onclick(){
//do click thing
}
}
一般情况下,我们是直接将一个临时实例接口参数传入到setOnclickListener调用函数中
button.setOnclickListener(new OnclickListener(){
@Override
public void Onclick(){
//do the click thing
}
});
不得不说,接口interface是java实现多态的利器。