【问题标题】:List View Design Pattern列表视图设计模式
【发布时间】:2010-08-30 01:14:20
【问题描述】:

我有一个列表视图,所有列表项(文本)都需要从 Web 服务更新。我的应用程序可以查询 Web 服务以一次性获取所有列表项,也可以查询一次获取一个列表项。 我有以下查询 1)如果我查询网络服务以一次获取所有列表项,下载并在列表中显示大约需要 15 秒。用户可能认为应用程序没有响应。 2)如果我为每个列表项查询 Web 服务,当用户向上或向下滚动时会发送多个查询。所以我正在下载用户可能看不到的项目。如果列表向上滚动。

请针对这种情况提出一个好的设计模式。

【问题讨论】:

    标签: android listview


    【解决方案1】:

    你可以做的是拥有以下

    • 后台 Android service 在给定的时间间隔内从您的网络服务下载新项目
    • 一个 sqlite 数据库并根据 ContentProvider 从数据库中存储/获取项目
    • 一个列表活动,它从您编写的已注册 ContentProvider 中检索项目上的光标

    基本上后台服务会通过你写的 ContentProvider 将项目存储在本地 sqlite db 中。然后,Activity 将再次通过 ContentProvider 检索项目的光标。

    这会给你带来的好处

    • 它会很快,使用光标和标准机制
    • 如果用户暂时断开连接,他们仍然会看到这些项目
    • 您的列表将自动刷新项目,并在 ContentProvider 上注册为观察者

    【讨论】:

    • 考虑以下用例。如果我有 100 个项目的列表。我从顶部开始下载列表项,但用户立即滚动到列表底部。用户必须等到第 100 个项目的查询进入 Web 服务。
    • 就个人而言,考虑到从 web 服务下载所有项目最多需要 15 秒,我会在后台服务中下载它们,但不会在滚动列表视图期间下载。应该不是问题。在滚动期间加载肯定会显着影响性能..
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多