# Android 中的回調(diào)函數(shù)揭秘

在學(xué)習(xí)Android的過程中,經(jīng)常會遇到"回調(diào)函數(shù)"這個詞,那么甚么是回調(diào)函數(shù)呢? 簡單地說,回調(diào)函數(shù)就是通過其指針來調(diào)用的函數(shù), 她不會被自己所在的對象調(diào)用, 只會在調(diào)用別人的方法的時候反過來被調(diào)用. 大家都知道,Android程序是通過java程序來實現(xiàn)的, java中是沒有指針的, 因此在實現(xiàn)回調(diào)時都是通過接口和抽象類.
回調(diào)的過程可以簡單的理解為,在A類中定義了一個方法,這個方法中用到了一個接口和該接口中的抽象方法,但是抽象方法 沒有具體的實現(xiàn), 需要B類去實現(xiàn). 當(dāng)B類實現(xiàn)該方法后, 它本身不會去調(diào)用這個方法. 而是傳遞給A類, 供A類去調(diào)用.這種機制就稱為回調(diào).
回調(diào)機制是將實現(xiàn)功能和定義分離的一種手段,市一中松耦合的設(shè)計思想. 接下來我們通過一段代碼進行分析,具體如下:

  • (1).定義回調(diào)接口 ICallBack
    //聲明一個接口
    public interface ICallBack{
       void postExec();
    }
  • (2).定義一個實現(xiàn)類 FooBar
    public void class  
{
    private ICallBack callback;
    public void setCallBack(ICallBack callBack){
       this.callBack = callback;
    }
    public void doSth(){
       callBack.postExec();
    }
    public static void main(String args[]){
       FootBar foo = new FootBar();
       foo.setCallBack(new ICallBack(){
         public void postExec(){
           Log.i("info","method executed!");
         }
       });
       foo.doSth();
    }
}

在上述代碼中, 第一段代碼定義了一個回調(diào)接口ICallBack, 該接口中有一個postExec()方法, 接受一個ICallBack參數(shù), 然后再doSth()方法中進行調(diào)用,這就是一個后回調(diào)函數(shù)的基本用法.

在Android開發(fā)中,會懂啊函數(shù)使用非常廣泛. 下面列舉兩個回調(diào)函數(shù)的使用場景, 讓大家更加直觀的看到回調(diào)函數(shù)是如何使用的.

應(yīng)用場景一,事件監(jiān)聽器的回調(diào)

    Button button = (Button)findViewById(R.id.button);
button.setOnClickListener(new Button.OnclickListener(){
    //回調(diào)函數(shù)
    @override
    public void onClick(View view){
      //doSomeThing...
    }
});

上面的代碼給按鈕添加了一個事件監(jiān)聽器, 自己不會顯示的去調(diào)用onClick()方法; 用戶出發(fā)了該按鈕的點擊事件后,它會由Android系統(tǒng)來自動調(diào)用.

應(yīng)用場景二:Activity生命周期中的回調(diào)

    @override
public void onCreate(Bundle saveInstanceState){
   super.oncreate(saveInstanceState);
   ...
}

@override
public void onResume(){
   super.onResume();
   ...
}

上面的代碼是創(chuàng)建Activity時, 系統(tǒng)自帶的onCreate()方法,該方法不會被認(rèn)為的調(diào)用, 但它會在Android系統(tǒng)進程中自動調(diào)用.
好了,這就是關(guān)于Android中回調(diào)函數(shù)的介紹,我這里廟小,裝不下大神,不喜勿噴哦!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 173,268評論 25 708
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 134,923評論 18 139
  • ¥開啟¥ 【iAPP實現(xiàn)進入界面執(zhí)行逐一顯】 〖2017-08-25 15:22:14〗 《//首先開一個線程,因...
    小菜c閱讀 6,523評論 0 17
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法,類相關(guān)的語法,內(nèi)部類的語法,繼承相關(guān)的語法,異常的語法,線程的語...
    子非魚_t_閱讀 31,765評論 18 399
  • 今天是星期五。本來我還信心滿滿的覺得今天絕對會有公司打電話過來邀請我下周星期一去上班的,然后,現(xiàn)在都快八點了。 希...
    Chenstyle閱讀 1,283評論 9 1