2013-09-05 55 views
1

在我的Android項目中,我有一個單例類,每秒從外部源檢索數據。當檢索數據時,它應該通知某些數據顯示對象有新的數據可用,以便他們可以自行更新。聽衆是一個很好的解決方案,它們是如何實現的?

我相信實現這個最好的方法是讓數據顯示器實現一些監聽接口,然後向數據檢索器單例註冊。

這是一個很好的解決方案嗎?這個問題通常如何解決?是否有任何現成的類/框架可供我使用?

+1

Observer模式? –

回答

1

一種解決方案是通過Observer接口和Observable類實現observer pattern類。例如:

import java.util.Observable; 

public class DataModel extends Observable 
{ 
    public void retrieveData() 
    { 
     // ... 

     setChanged(); 
     notifyObservers(); // or notifyObservers(someData); 
    } 
} 
import java.util.Observer; 

public class ViewClass implements Observer 
{ 
    @Override 
    public void update(Observable observable, Object data) 
    { 
     // update the view 
    } 
} 

您需要註冊這樣的觀察員

DataModel dm = ...; 
dm.addObserver(viewClass1); 
dm.addObserver(viewClass2); 
dm.addObserver(viewClass3); 
+0

你應該適當地不使用這個類,因爲它們有許多缺點。 '''Observable'''是一個類,因爲在java中沒有多重繼承,所以這可能是不可行的。只需要自己實現Observable和Observer! –

2

你需要的是一個回調。如果新數據可用,則會自動通知實現回調的其他類。

這是一個很好的描述Callbacks

相關問題