1. 程式人生 > >淺談Android中Callback(回撥)的使用

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

今天專案的Bug基本修改完成了,於是就對自己還未了解的回撥函式進行了學習。回撥其實就是在一定的時間裡做“一件事”,至於“這件事”具體做的是什麼不會管,只管做“這件事“,比如Boss叫員工去吃飯,但每個員工可能吃不同的食物。只不過,回撥是對介面而言。簡單來說就是,A物件呼叫了自己的方法a,方法a接收的引數是B介面的例項b,而在方法a中將執行介面B中的方法c。這樣解釋可能有點繞不過來,下面我們來看一個例子。

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

1.介面CallPerson

public interface CallPerson { 
     
    public abstract void doCallPerson (); 
 
} 

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

2.類Zhangsan

public class Zhangsan implements CallPerson { 
     
    String name = "Zhangsan"; 
     
    public String getName () { 
        return name; 
    } 
 
    @Override 
    public void doCallPerson() { 
        System.out.println(getName() + "聽到鈴聲,勤鳥,起床了!"); 
    } 
 
     
} 

3.類Lisi

public class Lisi implements CallPerson { 
    String name = "Lisi"; 
     
    public String getName () { 
        return name; 
    } 
 
    @Override 
    public void doCallPerson() { 
        System.out.println(getName() + "聽到鈴聲,懶豬,沒起床!"); 
    } 
     
} 

4.類Alarm

public class Alarm { 
     
    //響鈴 
    public void ring (CallPerson callPerson) { 
        callPerson.doCallPerson(); 
    } 
 
} 

5.Activity

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

import android.os.Bundle; 
import android.app.Activity; 
 
public class MainActivity extends Activity { 
 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
        super.onCreate(savedInstanceState); 
        setContentView(R.layout.layout_main); 
         
        Alarm alarm = new Alarm(); 
        Zhangsan zhangsan = new Zhangsan(); 
        Lisi lisi = new Lisi(); 
         
        //模擬鬧鈴定時時間到,然後響鈴 
        alarm.ring(zhangsan); 
        alarm.ring(lisi); 
    } 
 
} 

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

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

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




相關推薦

AndroidCallback的使用

今天專案的Bug基本修改完成了,於是就對自己還未了解的回撥函式進行了學習。回撥其實就是在一定的時間裡做“一件事”,至於“這件事”具體做的是什麼不會管,只管做“這件事“,比如Boss叫員工去吃飯,但每個員工可能吃不同的食物。只不過,回撥是對介面而言。簡單來說就是,A物件呼叫

Android的 Fragment、生命週期方法 以及使用

        4onActivityCreated()              當Activity中的onCreate方法執行完後呼叫。 注意了:從這句官方的話可以看出:當執行onActivityCreated()的時候 activity的onCreate才剛完成。所以在onActivityCrea

Android的LOG檢視ANR

轉自:http://yinger-fei.iteye.com/blog/1533788 手機中pull處理trace.txt 進去 data/anr 再pull 一:什麼是ANR                   ANR:Application Not Resp

Android的組播(多播)

-1 ip協議 strong 多個 接受 端口 ui線程 nbsp 數據 組播使用UDP對一定範圍內的地址發送相同的一組Packet,即一次可以向多個接受者發出信息,其與單播的主要區別是地址的形式。IP協議分配了一定範圍的地址空間給多播(多播只能使用這個範圍內

Spring的事務

spec style try 常見 產生原因 turn prop ret run 使用Spring管理事務過程中,碰到過一些坑,因此也稍微總結一下,方便後續查閱。1.代碼中事務控制的3種方式編程式事務:就是直接在代碼裏手動開啟事務,手動提交,手動回滾。優點就是可以靈

Android幸運快三平臺出租的meta-data及其應用

key 引用 平臺 name 如何 Coding pri sch xxxxx 在日常幸運快三平臺出租 haozbbs.com Q1446595067 的Android開發中,AndroidManifest中總會出現一些標簽,或是第三方SDK配置信息,或是系統配置,不禁讓人

AndroidAndroid的MVP

個人開發的微信小程式,目前功能是書籍推薦,後續會完善一些新功能,希望大家多多支援! 前言 為什麼使用MVP,網上有很多說法,最主要就是減輕了Activity的責任,相比於MVC中的Activity承擔的責任太多,因此有必要講講MVP。 MVP入門 在MVC框

Android的Handler機制

Handler是Android中提供的一種非同步回撥機制,也可以理解為執行緒間的訊息機制。為了避免ANR,我們通常會把一些耗時操作(比如:網路請求、I/O操作、複雜計算等)放到子執行緒中去執行,而當子執行緒需要修改UI時則子執行緒需要通知主執行緒去完成修改UI的

AndroidSerializable和Parcelable使用區別

Android中序列化有兩種方式:Serializable以及Parcelable。其中Serializable是Java自帶的,而Parcelable是安卓專有的。 一、Serializable序列化 serializable使用比較簡單,只需要對某個類實現Serializable 介面即可。 Ser

Android多圖包括大圖上傳時的記憶體處理,防止記憶體溢位。

Android多圖上傳時,為了防止記憶體溢位,基本只要做好兩點就好了,一是及時釋放已經上傳完的圖片,以及在對圖片處理時,必須是一張一張來,因為對圖片的處理過程是最容易OOM的。 下面有簡單的程式碼說明下, 1、首先,圖片的model, ImageBean model中

android手機聯絡人字母索引表的實現

實際上字母索引表的效果,可以說在現在的眾多APP中使用的非常流行,比如支付寶,微信中的聯絡人,還有購物,買票的APP中選擇全國城市,切換城市的時候,這時候的城市也就是按照一個字母索引的順序來顯示,看起來是很方便的.其實這種字母索引表的效果最開始是出現在微信的聯絡人中.因為覺

android載入高清大圖及圖片壓縮方式(二)

  這一講就是本系列的第二篇,一起來聊下關於android中載入高清大圖的問題,我們都知道如果我們直接載入原圖的話,一個是非常慢,需要等待一定時間,如果沒有在一定的時間內給使用者響應的話,將會極大影響使用者的體驗。另一個是如果你的手機記憶體小的話,可能會直接崩潰。這也就是直

android圖片處理之圖形變換特效Matrix(四)

今天,我們就來談下android中圖片的變形的特效,在上講部落格中我們談到android中圖片中的色彩特效來實現的。改變它的顏色主要通過ColorMatrix類來實現。 現在今天所講的圖片變形的特效主要就是通過Matrix類來實現,我們通過上篇部落格知道,改變色彩特效,主要

Android的MVVM模式

大家好啊,我是kele。眾所周知,Android的設計模式主要有三個:MVC,MVP,MVVM。今天主要來談一下MVVM模式,簡單說明它的好處以及它和MVP在實現方面的區別。 DataBinding android { ....

Android應用保護Android應用逆向的基本方法

對於未進行保護的Android應用,有很多方法和思路對其進行逆向分析和攻擊。使用一些基本的方法,就可以打破對應用安全非常重要的機密性和完整性,實現獲取其內部程式碼、資料,修改其程式碼邏輯和機制等操作。這篇文章主要介紹一些基本的應用逆向和分析方法,演示Android應用的程式

Android的非同步載入之ListView圖片的快取及優化三

     隔了很久沒寫部落格,現在必須快速脈動回來。今天我還是接著上一個多執行緒中的非同步載入系列中的最後一個使用非同步載入實現ListView中的圖片快取及其優化。具體來說這次是一個綜合Demo.但是個人覺得裡面還算有點價值的就是裡面的圖片的快取的實現。因為老實說它確實能

android圖片處理之色彩特效處理ColorMatrix(三)

在android開發中對圖片處理很是頻繁,其中對圖片的顏色處理就是很常見的一種。我們經常看到一些類似美圖秀秀,美顏相機的app,為什麼那麼黑的人拍出來是確實那麼地白呢?長的那麼那個(醜)的人,用美顏相機拍出來的看起來也有那麼回事(拍出來就感覺挺漂亮)。就像網上有個段子,有錢

android僅僅使用一個TextView實現高仿京東,淘寶各種倒計時

  今天給大家帶來的是僅僅使用一個TextView實現一個高仿京東、淘寶、唯品會等各種電商APP的活動倒計時。最近公司一直加班也沒來得及時間去整理,今天難得休息想把這個分享給大家,只求共同學習,以及自己後續的複習。為什麼會想到使用一個TextView來實現呢?因為最近公司在

Android的介面詳解,機制:以Activity和Adapter傳遞資料為例。

首先解決啥是回撥: 我覺得這個例子比較好:某天,我打電話向你請教問題,當然是個難題,你一時想不出解決方法,我又不能拿著電話在那裡傻等,於是我們約定:等你想出辦法後打手機通知我,這樣,我就掛掉電話辦其它事情去了。過了XX分鐘,我的手機響了,你興高采烈的說問題已經搞定,應該