- 官方定義
以 Android 中最常用到的點擊監聽器為例,來看看官方怎麼說。
從官方原始碼來看, listener/callback 是以 interface 去宣告的,然後裡面定義了一個 onClick function 讓人實作,當 view 被 click 的時候,就會觸發 onClick 這個 function。
- 個人理解
callback 不會馬上執行,而是達到特定條件下才會被觸發,例如:按鈕被按下、連線取得資料後觸發等。
- 舉例
就以 Android App 最入門的按鈕來當範例吧,上 code 。
- 應用
private Button button;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// bind
button = findViewById(R.id.button);
// set listener/callback
button.setOnClickListener(listener);
}
// 當 view 元件設定此監聽器(名為: listener)
// 該 view 元件被點擊的時候就會做 onClick 裡面的相應動作
private View.OnClickListener listener = new View.OnClickListener() {
@Override
public void onClick(View v) {
// 當 view 被點擊的時候會觸發此 function
System.out.println("listener has been triggered.");
// 確認當前的 thread
System.out.println(Thread.currentThread().getName());
}
};