需求:当在一个类中需要调用另一个类中的方法,使其具备通用性,使用步骤总结如下:
1、找出被观察者objectB(被观察者就是事件发生者)【观察者:需要被调用方法的对象】
-
2、在被观察者中定义一个观察者接口,接口中的方法就是观者感兴趣的事件
public interface onRefreshListener { //定义为接口因为java中不支持多继承 public void onRefresh(); // }
-
3、在被观察者中保存观察者的引用
private onRefreshListener listener; //观察者的引用 public void setOnRefreshListener(onRefreshListener listener){ this.listener = listener; }
-
4、在事件发生的时候,通知观察者,调用观察者中的方法
private void notifyRefresh(){ if (listener != null){ //排除没被调用的状态 listener.onRefresh(); } }
-
5 在被观察者中,事件发生时调用通知事件
... notifyRefresh(); ...
-
6 在观察者中,同被观察者所属的父类对象调用
objectB.setOnRefreshListener(new RefreshListView.onRefreshListener() { @Override public void onRefresh() { //观察者中的方法 } });
总结:回调的本质就是对象的引用传递过程。