安卓中回调与监听的区别
二者的概念
- 回调:事件源和处理者是相同,事件发生时,还是该事件对象本身进行处理
- 监听:事件源与处理者不相同,事件发生时,处理者是监听器
举个栗子说明
- 重写Button控件的onKeyDown 和onKeyUp如下
public class MyButton extends Button{
public boolean onKeyDown(int keyCode, KeyEvent event){
//code here
}
public boolean onKeyUp(int keyCode, KeyEvent event){
//code here
}
public boolean onTouch(MotionEvent event){
//code here
}
}
在这里,onKeyDown和onKeyUp这是属于回调方法,字面意思是说最终会调回到该方法进行处理
protected void onCreate(Bundle savedInstanceState) {
MyButton btn = new MyButton();
btn.setOnClickListener(
new View.OnClickListener() {
@Override
public void onClick(View v) {
//code here
}
});
}
上面属于监听,事件的处理方法不在btn里面,属于一个匿名的OnClickListener对象
- 一般来说,基于回调的事件处理可用于处理一些具有通用性的事件,基于回调的事件处理代码显得比较简洁.但由于某些特定的事件, 无法使用基于回调的事件处理,只能使用基于监听的事件处理.