Android開發——回撥(Callback)
阿新 • • 發佈:2019-02-12
1. 回撥函式的定義:
在A類中定義了一個方法,這個方法中用到了一個介面和該介面中的抽象方法,但是抽象方法沒有具體的實現,需要B類去實現,B類實現該方法後,它本身不會去呼叫該方法,而是傳遞給A類,供A類去呼叫。
2. 類比:
你(B類)去書店買書,結果發現想買的書賣完了,這時候書店(A類)告訴你他們有來書通知業務(介面和介面中的抽象方法),於是你留下了自己的手機號讓書店有書了給你來電(實現該抽象方法),書店等到有書了以後會根據你留下的電話和方法給你來電提醒你(B類實現的方法由A類來呼叫)。
2. 使用回撥的情況:
- 處理非同步請求的返回值
- 同一個事件有不同的處理方法
- 定義介面(public interfact),預定義需要完成的函式
- 定義A類,使用介面和該介面中的抽象方法,同時在初始化A時請求函式B作為callback的引數
- 定義B類(implements interface),設定函式的具體動作,並將B當做引數傳給A,使A在回撥時可以找到函式的位置
- 定義介面
//定義回撥介面
public interface Callback{
void notice();
}
- 定義A類
public class A{ private CallBack callBack; public A(CallBack callBack){ this.callBack = callBack; } public void Operation(){ if(callBack != null){ callBack.notice(); } } }
- 定義B類
public class B implement CallBack{
public static void main(String args[]) {
A a = new A(this);
a.Operation();
}
@Override
public void notice(){
System.out.println("Now you get notice!");
}
}