1. 程式人生 > >Android開發——回撥(Callback)

Android開發——回撥(Callback)

1. 回撥函式的定義: 在A類中定義了一個方法,這個方法中用到了一個介面和該介面中的抽象方法,但是抽象方法沒有具體的實現,需要B類去實現,B類實現該方法後,它本身不會去呼叫該方法,而是傳遞給A類,供A類去呼叫。 2. 類比: 你(B類)去書店買書,結果發現想買的書賣完了,這時候書店(A類)告訴你他們有來書通知業務(介面和介面中的抽象方法),於是你留下了自己的手機號讓書店有書了給你來電(實現該抽象方法),書店等到有書了以後會根據你留下的電話和方法給你來電提醒你(B類實現的方法由A類來呼叫)。 2. 使用回撥的情況:
  • 處理非同步請求的返回值
  • 同一個事件有不同的處理方法
3. 回撥的使用方法:
  • 定義介面(public interfact),預定義需要完成的函式
  • 定義A類,使用介面和該介面中的抽象方法,同時在初始化A時請求函式B作為callback的引數
  • 定義B類(implements interface),設定函式的具體動作,並將B當做引數傳給A,使A在回撥時可以找到函式的位置
4. 具體程式碼:
  • 定義介面
//定義回撥介面
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!");
	}
}