2013-09-05 27 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

相关问题