初識Android 回調機制,初識android回調
在Android中到處可見介面回調機制,尤其是UI事件處理方面。舉一個最常見的例子button點擊事件,button有一個點擊方法onClick(),我們知道onclick()是一個回調方法,當使用者點擊button就執行這個方法。
在Java 中,通過介面和內部類的方式實現回調的功能:
1. 定義介面 OnItemClickClass,包含回調方法 OnItemClick()
2. 在一個類CallerClass 中聲明一個OnItemClickClass介面對象 onItemClickClass
3. 在程式中賦予 Caller對象的介面成員(onItemClickClass) 一個內部類對象如
new OnItemClickClass(){
OnItemClick(){
//函數的具體實現
}
這樣,在需要的時候,可用CallerClass 對象的onItemClickClass介面成員 調用OnItemClick()方法,完成回調.
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(); }}