天天看點

Android筆記--對回調函數的了解

1、寫一個接口:      
public interface CountInterface {
    public void CountValue(String value);
}      
2、寫一個Test類:      
public class Test {
    int countsum;
    private CountInterface countcallback;

    public void setCallBack(int x, int y, CountInterface countcallback) {
        this.countcallback = countcallback;
        countsum = x + y;

    }
    public void count() {
        countcallback.CountValue(countsum + "");
    }
}      
3、MainActivity類onCreate()函數下:
Test test = new Test();
	test.setCallBack(2, 5, new CountInterface() {      
//回調函數
    	 @Override
    	 public void CountValue(String value) {
        	System.out.println("回調函數中的值:" + value );
    	  }
	 });
	//執行下面的代碼才會執行回調函數中的代碼
	test.count();      
了解:
1、回調函數就是一個通過函數指針來調用的函數。因為java沒辦法操作指針,于是它用接口來實作。      
如果将函數A的指針(位址,引用)(CountValue函數)通過形參傳遞到另一個類(Test類)的某個函數裡,那麼當這個類(Test類)調用該函數裡面我所傳入的指針時,就能調用函數A。      
2、實作了一個接口裡的方法CountValue,然後注冊到Test類,然後可以去做别的事情去了,Test類在某個觸發的時機(test.count();)回頭來調用CountValue的方法。      
3、回調過程就是傳入函數A的位址,Test類接收,并在某個時刻回調這邊的A函數。      
4、有些庫函數(library function)要求應用先傳給它一個函數,好在合适的時候調用,以完成目标任務。這個被傳入的、後又被調用的函數就稱為回調函數(callback function)。      
5、以通知替代輪詢,回調函數CountValue()不用一直詢問是否需要執行,它隻需等待一個通知(回調)執行。