談談我對CallBack的理解_回呼函數的意義和用法

來源:互聯網
上載者:User

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(轉載請說明出處)

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.