CallBack是回調的意思,一般稱之為回呼函數
百科的解釋:http://baike.baidu.com/link?url=8yMUwVEFRzxR4JGMxVN_UnFgJIH4WTnsybuW5NfwgKqVKP8NtShfJnNNeY9mBzRT
用一個比較形象的例子:
你餓了,想吃飯,就一會去問你媽一聲"開飯沒有啊?"
這就是正常函數調用.
但是今天你媽包餃子,花的時間比較長,你跑啊跑啊,就煩了.於是你給你媽說,我先出去玩會,開飯的時候打我手機.
等過了一陣,你媽給你打電話說"開飯啦,回來吃飯吧!"
其中,你告訴你媽打手機找你,就是你把回呼函數控制代碼儲存到你媽的動作.你媽打電話叫你,就是個回調過程.
下面用一個Android中應用到"回調"的情境,來進一步解釋。
Button button = (Button)this.findViewById(R.id.button);button.setOnClickListener(new Button.OnClickListener() { //回呼函數 @override publicvoid onClick(View v) { buttonTextView.setText("按鈕被點擊了"); }});
這裡肯定很熟悉了,給Button設定監聽器
這其實就是"回調"最常見的應用情境之一。我們自己不會顯示地去調用onClick方法。使用者觸發了該按鈕的點擊事件後,它會由Android系統來自動調用。
在這裡我們用代碼,類比註冊事件監聽器。
先寫一個監聽器介面
package com.listener;/** * 點擊監聽器介面 * @author jason0539 * */public interface MyOnClickListener { public void onClick();}
然後寫一個我們自己的Button類
package com.listener;public class MyButton { private MyOnClickListener listener; /** * 設定具體點擊監聽器 * @param listener 點擊監聽器實作類別 */ public void setOnClickListener(MyOnClickListener listener) { this.listener = listener; } /** * 按鈕被點擊 */ public void doClick() { listener.onClick(); }}
最後類比Client端的註冊監聽器和觸發點擊操作。
package com.listener;publicclass Client { public static void main(String[] args) { MyButton button =new MyButton(); //註冊監聽器 button.setOnClickListener(new MyOnClickListener() { @Override public void onClick() { System.out.println("按鈕被點擊了"); } }); //類比使用者點擊 button.doClick(); }}
以上就是"回調"思想在Java中事件監聽的運用
用心體會一下,是不是就知道,什麼是CallBack,什麼是回呼函數了.
作者:jason0539
微博:http://weibo.com/2553717707
部落格:http://blog.csdn.net/jason0539(轉載請說明出處)