回調,我的理解就是:
- 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);
});