標籤:android blog http os java ar strong div sp
回調機制在 Android 監聽使用者介面操作中的體現
本文討論以下兩個內容:
1. 回呼函數
2. 回調機制在 Android架構 監聽使用者介面操作中的作用
一 回呼函數
回呼函數就是一個通過函數指標調用的函數。如果你把函數的指標(地址)作為參數傳遞給另一個函數,當這個指標被用為調用它所指向的函數時,我們就說這是回呼函數。回呼函數不是由該函數的實現方直接調用,而是在特定的事件或條件發生時由另外的一方調用的,用於對該事件或條件進行響應。
Java 中沒有指標的概念,通過介面和內部類的方式實現回調的功能:
1. 定義介面 Callback ,包含回調方法 callback()
2. 在一個類Caller 中聲明一個Callback介面對象 mCallback
3. 在程式中賦予 Caller對象的介面成員(mCallback) 一個內部類對象如
new Callback(){
callback(){
//函數的具體實現
}
這樣,在需要的時候,可用Caller對象的mCallback介面成員 調用callback()方法,完成回調.
二、回調機制在 Android架構 監聽使用者介面操作中的作用
Android事件接聽程式是視圖View類的介面,包含一個單獨的回調方法。這些方法將在視圖中註冊的接聽程式被使用者介面操作觸發時由Android架構調用。回調方法被包含在Android事件接聽程式介面中:
例如,Android 的view 對象都含有一個命名為 OnClickListener 介面成員變數,使用者的點擊操作都會交給 OnClickListener的 OnClick() 方法進行處理。
開發人員若需要對點擊事件做處理,可以定義一個 OnClickListener 介面對象,賦給需要被點擊的 view的介面成員變數OnClickListener,一般是用 view 的setOnClickListener() 函數來完成這一操作。
當有使用者點擊事件時,系統就會回調被點擊view的OnClickListener介面成員的OnClick()方法。
執行個體(對於Android介面上Button點擊事件監聽的類比):
1.定義介面
public interface OnClickListener {
public void OnClick(Button b);
}
2. 定義Button
public class Button {
OnClickListener listener;
public void click() {
listener.OnClick(this);
}
public void setOnClickListener(OnClickListener listener) {
this.listener = listener;
}
}
3. 將介面對象OnClickListener 賦給 Button的介面成員
public class Activity {
public Activity() {
}
public static void main(String[] args) {
Button button = new Button();
button.setOnClickListener(new OnClickListener(){
@Override
public void OnClick(Button b) {
System.out.println("clicked");
}
});
button.click(); //user click,System call button.click();
}
}
轉一篇簡易易懂的android回調的實現--->(轉的)