寫在前面,最近對回掉函數有了更深刻的認識,現在記錄如下。由於在家看不到底層代碼,在公司不能訪問外網,現在只能憑靠記憶寫這篇博文了,寫錯的地方還希望大神們指出來
其實給組件設置監聽就是最典型的回掉函數的實例。為此專門看了下底層的控件View控件。
- 在View.java中,定義了各種接口,比如OnClickListener、OnTouchListener、OnLongClickListener、OnScrollListener、OnDragListener等等各種接口
- 然后在View.java中設置相應的set方法和全局變量mOnClickListener,在set方法中為mOnClickListener賦值。比如:setOnClickListener(OnClickListener listener)。
- 最后在View.java中要有(理論上)調用該接口中方法的地方,注意判斷全局變量mOnClickListener是否為空。——比如在onTouchevent中去調用
以上就完成了接口(回掉)的定義。也可以稱之為函數(方法)理論上的流程。因為畢竟只是定義了接口。而方法實際的流程,也就是實際的操作是在另外一個類中,比如我們平時對一個Button去setOnClickListener(OnClickListener listener),就是對該接口的實現,也稱之為對該接口的回掉。
對接口的回掉時要在另外一個類中做如下操作:
- 導包eg:import android.view.View.OnClickListener;
- 必須要在控件初始化的時候set該接口eg:在OnCreate中初始化Button的時候btnButton.setOnClickListener(new OnClickListener());——比如在OnCreate中
- 要實現接口中的方法。
以前總結過事件監聽的四種方法,由於事件監聽和回掉是一個原理,故設置回掉函數也有四種方法,詳見