0

我正在开发一个 Android 应用程序,并且我正在向服务器发出许多 RESTful 请求以获取信息。我应该总是提出这些请求,还是将其中一些请求存储在设备上的 SQLite 数据库中?如果我应该存储,我如何确定应该存储多少(如果不是全部)数据?

该应用程序是一个教育社交网络,因此有以下对象:

  • 用户
  • 学校
  • 笔记
  • 培训班
    • 注释
    • 问题

目前的计划是将信息存储在数据库中并经常检查更新,还是我应该总是从服务器请求数据?此外,我应该在单个请求中提取嵌套数据还是将其拆分为多个 RESTful 请求?

4

2 回答 2

1

最好的解决方案是将您拥有的所有数据存储在本地,有时只是启动AsyncTaskAsyncLoader下载更新。这样,您的用户将能够在离线时使用您的应用程序,而无需在您的应用程序启动时等待下载完成。

你应该总是有一些数据要显示。在您的应用程序中包含一个基本数据集可能很有​​用,因此即使没有网络,数据库也会在第一次运行时填充。

regarding single vs multiple requests:

单个请求通常比几个较小的请求快,但是,它在移动网络上失败的可能性更高。如果您的数据请求在 GSM 网络上花费的时间不超过 10 秒,您应该没问题,否则您可能会考虑拆分成更小的请求。

于 2012-11-25T04:08:16.237 回答
1

虽然在本地存储所有(相关)数据是一种选择,但它有时会变得非常庞大,如果您的应用程序蓬勃发展,那么所需的空间也会如此。相反,将相关数据的最新副本保存在本地,并广播更新,如果在线是另一种出路,您的应用可以下载该更新。

鉴于您的应用程序是一种社交网络,您会希望在用户可用时尽快获得最新更新。在本地存储并每隔一段时间触发一个异步任务意味着您正在修复更新的延迟(这将等于异步任务运行之间的延迟+任务的运行时间)。此外,很多时候可能没有更新,您会毫无意义地查询服务器。

这可以通过“广播更新”方法来解决,您的服务器存储正在服务的设备列表(可以在应用程序安装时注册),并且每次有与您可以广播的特定设备集相关的更新时对他们的更新。(尝试使用Google Cloud Messaging开始使用这种方法。)

于 2012-11-25T05:19:28.453 回答