12/14/2011

[Android] Observer

觀察者(Observer)模式在Android中有著廣泛的應用,尤其是在Listener中應用廣泛。本文以Button為例來介紹一下觀察者模式。
首先回顧一下觀察者模式。
觀察者模式又叫做發布-訂閱(Publish/Subscribe)模式、模型-視圖(Model/View)模式、源-監聽器(Source/Listener)模式或從屬者(Dependents)模式。
觀察者模式定義了一種一對多的依賴關係,讓多個觀察者對象同時監聽某一個主題對象。這個主題對像在狀態上發生變化時,會通知所有觀察者對象,使它們能夠自動更新自己。其結構如下:



可以看出觀察者向Subject註冊Attach和註銷Detach,當Subject狀態發生變化時,調用觀察者的方法update,要求觀察者更新狀態。
在Android系統中,Activity是通過ContentResolver來和ContentProvider來交互的。我們可以向ContentResolver註冊一個observer來監聽數據的更新,調用ContentResolver的方法registerContentObserver()即可完成註冊。這樣當對應的ContentProvider數據更新的時候,我們向ContentResolver註冊的對象方法將會被調用。這也是Android系統中的一個Observer模式應用實例。
當然在Android系統中Observer應用的地方還是很多的,學習Android系統的時候請注意留意。

沒有留言:

張貼留言

請留言~一起討論吧~