好的,这是我的第一篇文章,
我有一个从本地数据库表填充的ListView。从那里我必须检查是否有新的数据来自Web服务,如果是这样,首先我必须更新该特定的表然后UI。
现在我需要大致了解如何实现这个目标?
来自网络服务的数据不会经常变化。所以我需要创建一些架构/机制,其中数据总是首先从数据库加载然后如果新数据可从Web服务获得,那么我解析服务更新表然后更新UI。
基本上我想要这样的东西
MainThread
|
|
|-------->>--------separate thread----->>-----|
| |
| listener/ query db,
populate UI <<----------- observer/ ------<<----get data
| something |
| |
| |
| |
| check if we have new data--->> if no-- DONE
| |
| if yes
| |
| call web service,
| fetch data,
| update table
| listener/ |
update UI <<-------------observer/-----<<--------|
| something
|
有点像Tumblr android App ..
现在我认为我可以通过在类和接口(作为观察者/监听器)中包装AsyncTask来实现这一目标
但我喜欢使用Loader(在android中可用),
还有其他建议吗?
答案 0 :(得分:0)
好问题!
您似乎正在尝试实现着名的Google I / O设计模式? Google IO Rest design pattern, Finished ContentProvider and stuck now https://www.youtube.com/watch?v=xHXn3Kg2IQE
我过去做过(可能没有应该做的那么好;-))。我的建议是肯定这两点:
如果不是这样,由于数据库访问,您可能会遇到性能问题。 但这是一个非常好的模式。
另一个建议是使用事件总线而不是锅炉板,令人沮丧的界面更新UI。 (我完全使用这个https://github.com/greenrobot/EventBus没有性能问题,Otto既好又简单,但不能很好地与android-annotations集成。)
希望它会有所帮助。