天天看點

一個經典例子讓你徹徹底底了解java回調機制

以前不了解什麼叫回調,天天聽人家說加一個回調方法啥的,心裡想我草,什麼叫回調方法啊?然後自己就在網上找啊找啊找,找了很多也不是很明白,現在知道了,所謂回調:就是a類中調用b類中的某個方法c,然後b類中反過來調用a類中的方法d,d這個方法就叫回調方法,這樣子說你是不是有點暈暈的,其實我剛開始也是這樣不了解,看了人家說比較經典的回調方式:

class a實作接口callback callback——背景1

class a中包含一個class b的引用b ——背景2

class b有一個參數為callback的方法f(callback callback) ——背景3

a的對象a調用b的方法 f(callback callback) ——a類調用b類的某個方法 c

然後b就可以在f(callback callback)方法中調用a的方法 ——b類調用a類的某個方法d

大家都喜歡用打電話的例子,好吧,為了跟上時代,我也用這個例子好了,我這個例子采用異步加回調

有一天小王遇到一個很難的問題,問題是“1 + 1 = ?”,就打電話問小李,小李一下子也不知道,就跟小王說,等我辦完手上的事情,就去想想答案,小王也不會傻傻的拿着電話去等小李的答案吧,于是小王就對小李說,我還要去逛街,你知道了答案就打我電話告訴我,于是挂了電話,自己辦自己的事情,過了一個小時,小李打了小王的電話,告訴他答案是2

通過上面的那個例子你是不是差不多明白了回調機制呢,上面是一個異步回調,我們看看同步回調吧,onclick()方法

現在來分析分析下android view的點選方法onclick();我們知道onclick()是一個回調方法,當使用者點選view就執行這個方法,我們用button來舉例好了

下面是view類的setonclicklistener方法,就相當于b類咯,隻把關鍵代碼貼出來

這個例子就是android典型的回調機制,看完這個你是不是更進一步的了解了回調機制呢? 線程run()也是一個回調方法,當執行thread的start()方法就會回調這個run()方法,還有處理消息都比較經典等等

這也是小弟對回調機制的一點拙見,不懂的請留言,如果有錯誤希望指出!多謝!