回調方法一般都是通過一個接口類去實現,接口類作爲方法的參數傳遞進去,接口中的方法的參數值就是返回給我們的值,我們可以定義返回值,去完成我們的需求。有了這個接口類,我們就可以動態的方法的執行過程,比如有這樣的一個需求,要實現複製文件的時候實現進度條,如果這個時候用回調的方法就很容易實現,而不是苦惱於怎樣去在兩個類之間進行傳參數
比如下面有這樣的一個複製文件的方法
/**
第一個參數:是要複製的文件
第二參數:是要複製到的路徑
第三個參數:是一個接口類,實現的是監聽複製文件過程
**/
Public Boolean CopyFile(FilecopyFile,String savePath, CopyDataListenerlistener){}
Publicinterface CopyDataListener {
//監聽過程一:是文件開始複製
void on Copy Start();
//監聽過程二:是文件複製過程
//第一個參數:是文件複製的當前長度
//第二個參數:是文件的總長度
void onCopying(long currentLong, long fileLong);
//監聽過程三:文件複製完成
void onCopyComplete(long fileLong);
}
這個監聽類是一個自定義的接口類,裏面的三個方法是模擬文件複製的三個過程,“開始複製”,“複製進行”,“複製結束”,在這三個方法裏面的參數是根據實際的開發需要來設定,比如現在,我要實際進度條的更新,我就可以在“複製進行”這個過程中不斷的更新進度條,從而達到進度條更新的效果。當然我們也可以按照平常的思路,將進度條作爲參數傳遞過來,也可以實現進度條更新的效果,但是這是不推薦的方法。
又比如有這樣的一個需求我們要上傳文件
可以控制文件上傳的暫定,開始,取消的操作
這就需要我們動態的控制線程,去幫我們實現要做的事
總的來說回調函數的好處:
1. 可以動態的監聽所執行的方法
2. 你可以在方法執行的過程中返回你想要的值。