Java 最初从本地db表填充UI,然后如果WebService有新的数据更新表和UI

Java 最初从本地db表填充UI,然后如果WebService有新的数据更新表和UI,java,android,sqlite,android-loadermanager,Java,Android,Sqlite,Android Loadermanager,好的,这是我的第一篇帖子 我有一个从本地db表填充的ListView。从那个里我必须检查是否有来自web服务的新数据可用,若有,首先我必须更新那个特定的表,然后更新UI 现在我需要关于如何实现这一点的粗略想法 来自web服务的数据不会经常更改。所以,我需要创建一些体系结构/机制,其中数据总是首先从数据库加载,然后如果web服务中有新数据可用,那么我解析服务更新表,然后更新UI 基本上我想要这样的东西 MainThread | | |----

好的,这是我的第一篇帖子

我有一个从本地db表填充的ListView。从那个里我必须检查是否有来自web服务的新数据可用,若有,首先我必须更新那个特定的表,然后更新UI

现在我需要关于如何实现这一点的粗略想法

来自web服务的数据不会经常更改。所以,我需要创建一些体系结构/机制,其中数据总是首先从数据库加载,然后如果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               
        |
主线程
|
|
|-------->>--------独立线程------>>-----|
|                                             |
|侦听器/查询数据库,
填充UI好问题

似乎您正在尝试实现著名的Google I/O设计模式?

我过去做过(也许不如应该做的那么好;-))。我的建议是确保这两点:

  • 你的桌子不太复杂
  • 您的更新并不总是发生
如果不是这样,您可能会因为数据库访问而面临性能问题。 但这是一个非常好的模式

另一个建议是使用事件总线而不是boiler plate,这会阻碍UI更新的界面。(我通常使用这一款,没有性能问题,Otto也很好,也很简单,但不能很好地与android注释集成)


希望能有所帮助。

所以请使用AsyncTaskLoaderwell,感谢您指出REST体系结构。我使用了“REST方法,使用服务API”。根据我的要求调整了一下。我用Loader实现了它。谢谢你提到EventBus。所以后来我找到了这个。无论是谁,想要实现“提问中的图像”之类的东西,或者在UI中呈现之前操纵他们的响应,这都是非常有用的。另外,RxJava的用例不仅限于此。它的用途非常广泛。请检查一下。