在我的 Android 项目中,我有一个单例类,它每秒从外部源检索数据。当数据被检索到时,它应该通知一些数据显示对象有新的数据可用,以便他们可以更新自己。
我认为实现这一点的最好方法是让数据显示器实现一些监听接口,然后向数据检索器单例注册。
这是一个好的解决方案吗?这个问题一般是怎么解决的?我应该使用任何现成的类/框架吗?
在我的 Android 项目中,我有一个单例类,它每秒从外部源检索数据。当数据被检索到时,它应该通知一些数据显示对象有新的数据可用,以便他们可以更新自己。
我认为实现这一点的最好方法是让数据显示器实现一些监听接口,然后向数据检索器单例注册。
这是一个好的解决方案吗?这个问题一般是怎么解决的?我应该使用任何现成的类/框架吗?
你需要的是一个回调。如果有新数据可用,将自动通知实现回调的其他类。
这是Callbacks的一个很好的描述。
Yes 看起来像是观察者模式的经典用例。http://en.wikipedia.org/wiki/Observer_pattern
一种解决方案是通过接口和类来实现观察者模式。例如:Observer
Observable
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);