歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> 淺談Android中Callback(回調)的使用

淺談Android中Callback(回調)的使用

日期:2017/3/1 10:05:54   编辑:Linux編程

今天Android項目的Bug基本修改完成了,於是就對自己還未了解的回調函數進行了學習。就得到的結果來看,個人覺得回調就像多態一樣,比如Boss叫員工去吃飯,但每個員工可能吃不同的食物。只不過,回調是對接口而言。簡單來說就是,A對象調用了自己的方法a,方法a接收的參數是B接口的實例b,而在方法a中將執行接口B中的方法c。這樣解釋可能有點繞不過來,下面我們來看一個例子。

比如宿捨的某個同學設置了一個鬧鈴,鬧鈴響時全宿捨的人都能聽到,但是張三比較勤奮,聽到鈴聲後起床了,李四比較懶,聽到鈴聲後還要睡會。我們可以把鬧鈴發出的鈴聲看作是接口,張三和李四都實現了這個“接口”,鬧鈴到一定時間後就要“響鈴”,響鈴就要發出“鈴聲”,“鈴聲”就去叫人,至於人會做什麼就是人本身的事情。下面看個代碼。

1.接口CallPerson

  1. publicinterface CallPerson {
  2. publicabstractvoid doCallPerson ();
  3. }

定義了一個“叫人”的方法。實現這個接口可理解成安裝了鬧鈴。

2.類Zhangsan

  1. publicclass Zhangsan implements CallPerson {
  2. String name = "Zhangsan";
  3. public String getName () {
  4. return name;
  5. }
  6. @Override
  7. publicvoid doCallPerson() {
  8. System.out.println(getName() + "聽到鈴聲,勤鳥,起床了!");
  9. }
  10. }

3.類Lisi

  1. publicclass Lisi implements CallPerson {
  2. String name = "Lisi";
  3. public String getName () {
  4. return name;
  5. }
  6. @Override
  7. publicvoid doCallPerson() {
  8. System.out.println(getName() + "聽到鈴聲,懶豬,沒起床!");
  9. }
  10. }

4.類Alarm

  1. publicclass Alarm {
  2. //響鈴
  3. publicvoid ring (CallPerson callPerson) {
  4. callPerson.doCallPerson();
  5. }
  6. }

5.Activity

然後我們在Activity裡模擬鬧鈴開始響鈴

  1. import android.os.Bundle;
  2. import android.app.Activity;
  3. publicclass MainActivity extends Activity {
  4. @Override
  5. publicvoid onCreate(Bundle savedInstanceState) {
  6. super.onCreate(savedInstanceState);
  7. setContentView(R.layout.layout_main);
  8. Alarm alarm = new Alarm();
  9. Zhangsan zhangsan = new Zhangsan();
  10. Lisi lisi = new Lisi();
  11. //模擬鬧鈴定時時間到,然後響鈴
  12. alarm.ring(zhangsan);
  13. alarm.ring(lisi);
  14. }
  15. }

最後,我們來看看執行的結果

  1. 12-07 21:49:41.947: INFO/System.out(6107): Zhangsan聽到鈴聲,勤鳥,起床了!
  2. 12-07 21:49:41.947: INFO/System.out(6107): Lisi聽到鈴聲,懶豬,沒起床!

好了,這就是我對回調的理解,如有不對之處望大家指出,謝謝!

Copyright © Linux教程網 All Rights Reserved