回调,我的理解就是:
- A在这里调用B中方法
- B中那个方法的参数是A中实现了B中接口的对象
- B中方法使用上面的对象
- 这样B中需要A做的逻辑就由对象又重新调用回去了
看起来,不好理解。看下面代码就好了。
被调用者B:
public class Person {
AI mListener;
...
// 接口,实现此接口的对象作为参数,传给下面的fun方法.
// 方法里面再调用SwitchStateChanged,即相当于
// 1.执行了对象里面的override的方法
// 2.把参数(数据)传到对象那里
public interface AI{
void override_fun(String str);
}
public void fun(AI listener) {
this.mListener = listener;
}
mListener.override_fun("B中的数据");//传数据,更新UI之类的
...
}
调用者A:
Person p = new Person();
p.fun(new B.AI() {
@Override
public void override_fun(str) {
Log.d("TAG",str);
});