回呼函數在Android監聽機制中的體現

來源:互聯網
上載者:User

今天想總結一下這一個月來學習android的一些體會,其中體會最大的就是回呼函數在Android監聽機制中的表現。可以說android系統中的監聽無處不在~

一、回呼函數

~  所謂回調,就是客戶程式C調用服務程式S中的某個函數A,然後S又在某個時候反過來調用C中的某個函數B,對於C來說,這個B便叫做回呼函數。例如Win32下的視窗過程函數就是一個典型的回呼函數。一般說來,C不會自己調用B,C提供B的目的就是讓S來調用它,而且是C不得不提供。由於S並不知道C提供的B姓甚名誰,所以S會約定B的介面規範(函數原型),然後由C提前通過S的一個函數R告訴S自己將要使用B函數,這個過程稱為回呼函數的註冊,R 稱為註冊函數。Web Service以及Java的RMI都用到回調機制,可以訪問遠程伺服器程式。

具體流程如下:

Java 中沒有指標的概念,通過介面和內部類的方式實現回調的功能:

1. 定義介面Callback ,包含回調方法callback()

2. 在一個類Caller 中聲明一個Callback介面對象mCallback

3. 在程式中賦予Caller對象的介面成員(mCallback) 一個內部類對象如

new  Callback(){

     callback(){

         //函數的具體實現

     }

這樣,在需要的時候,可用Caller對象的mCallback介面成員 調用callback()方法,完成回調.

二、執行個體

1、定義介面

 

public interface OnUpKeyLisnter{//定義一個借口,以便其他人根據我的定義編寫程式實現介面

    public void OnUpkey();

  }

2、定義服務函數

 

public class InterfaceServer implements OnUpKeyLisnter{

 

  public OnUpKeyLisnter mOnUpKeyLisnter;

 

  @Override

  public void OnUpkey() {

    // TODO Auto-generated method stub

    if(mOnUpKeyLisnter != null){

      mOnUpKeyLisnter.OnUpkey();

    }

   

  }

 

  public void setOnUpKeyListener(OnUpKeyLisnter l){

    this.mOnUpKeyLisnter = l;

  }

}

 

3、定義客戶函數

 

public class InterfaceClient {

 

 

  public static void main(String ...args){

    InterfaceServer mServer = new InterfaceServer();

    mServer.setOnUpKeyListener(new OnUpKeyLisnter() {

     

      @Override

      public void OnUpkey() {

        // TODO Auto-generated method stub

        System.out.println("哈哈哈~");

      }

    });

  }

}

 

 

 

回呼函數在Android開發中頻繁使用,一定要深入理解。

 

本文出自 “曾經滄海難為水~” 部落格

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.