Android原理——回调机制
Android回调机制
回调函数可以把调用者与被调用者分开,调用者不关心谁是被调用者,调用者只需知道具有特定原型和限制条件的被调函数。
1.定义一个回调函数;
2.提供函数实现的一方在初始化的时候,将回调函数的实例化接口提交给调用者;
3.当特定的事件或条件发生的时候,调用者使用接口调用回调函数对事件进行处理。
看到过一句写的比较好的描述:A类中调用B类的某个方法C,然后B类中反过来调用A类的方法D,D这个方法就叫回调方法
先引用一个Android源码中经典的例子:
//接口类, B类实现接口,A类调用接口
public interface OnClickListener {
void onClick(View v);
}
//相当于A类
public class MainActivity extends Activity implements OnClickListener{
private Button button;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button = (Button)findViewById(R.id.button1);
// A类实例化接口
button.setOnClickListener(this);
}
@Override
public void onClick(View v) {
// 回调函数
}
}
// 相当于B类
public class View implements Drawable.Callback, KeyEvent.Callback, AccessibilityEventSource {
// 接口实例
protected OnClickListener mOnClickListener;
// 接口实例化
public void setOnClickListener(OnClickListener l) {
if (!isClickable()) {
setClickable(true);
}
mOnClickListener = l;
}
public boolean performClick() {
if (mOnClickListener != null) {
//B类调用A类的实现方法
mOnClickListener.onClick(this);
return true;
}
return false;
}
}
上面的例子写的很清楚,这里我用markdown做个图表示:
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。