參考
回調(diào)函數(shù),就是回頭再調(diào)用的函數(shù)
Android回調(diào)函數(shù)機(jī)制那點(diǎn)事
所謂回調(diào)函數(shù),或者在面向?qū)ο笳Z言里叫回調(diào)方法,簡單點(diǎn)講,就是回頭在某個時間(事件發(fā)生)被調(diào)用的函數(shù)。在python和javascript里,可以直接把函數(shù)當(dāng)對象傳參,這些語言都很好實(shí)現(xiàn)回調(diào)函數(shù)(方法) 。在java中,回調(diào)方法是用借用接口來實(shí)現(xiàn)的。
為什么要用回調(diào)
我們都知道Java是一門面向?qū)ο蟮恼Z言,有一句很著名的話就是”萬事萬物皆為對象”,我們把普通事物的共性抽取出來,而這些共性之中又充斥著特性,每個不同的特性就需要交給特定的情況處理,通過暴露接口方法可以減少很多重復(fù),代碼更加優(yōu)雅。
打個比方,Button、ImageButton等都具有可被點(diǎn)擊的共性,但是被點(diǎn)擊之后相關(guān)事件的處理是不同的,比如說我想我要點(diǎn)擊的這個Button彈出一個消息提示,然而我希望我的ImageButton點(diǎn)擊之后可以彈出一個Notifaction通知,這個時候回調(diào)方法的好處就體現(xiàn)出來了,因為android對外暴露的OnClickListener()接口中含有一個OnClick()方法,你需要怎樣的具體實(shí)現(xiàn)都由你自己定義,而這個回調(diào)方法的所在類View不會管你怎么實(shí)現(xiàn)的,它只負(fù)責(zé)調(diào)用這個回調(diào)方法,這就是使用回調(diào)的好處。