Android 与通过网络请求相比,我应该在设备上存储什么样的信息?

Android 与通过网络请求相比,我应该在设备上存储什么样的信息?,android,database,rest,client-server,Android,Database,Rest,Client Server,我正在开发一个Android应用程序,我正在向服务器发出许多RESTful请求以获取信息。我应该总是发出这些请求,还是将其中的一部分存储在设备上的SQLite数据库中?如果我应该存储,我如何确定应该存储多少(如果不是全部)数据 该应用程序有点像教育社交网络,因此存在以下对象: 使用者 学校 注释 课程 评论 问题: 目前的计划是将信息存储在数据库中并经常检查更新,还是应该始终从服务器请求数据?此外,我应该在单个请求中提取嵌套数据,还是将其拆分为多个RESTful请求?最好的解决方案是存储

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

该应用程序有点像教育社交网络,因此存在以下对象:

  • 使用者
  • 学校
  • 注释
  • 课程
    • 评论
    • 问题:

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

最好的解决方案是存储本地所有的数据,有时启动
AsyncTask
AsyncLoader
下载更新。这样,您的用户就可以在脱机时使用您的应用程序,而无需等待应用程序启动时下载完成

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

regarding single vs multiple requests:
单个请求通常比几个较小的请求更快,但是,它在移动网络上失败的概率更高。如果你的数据请求在GSM网络上不超过10秒,你应该是好的,否则你可能会考虑分成更小的请求。

< P>在本地存储所有(相关的)数据是一种选择,它有时会变得非常巨大,如果你的应用程序繁荣,那么空间也将需要。相反,将相关数据的最新副本保存在本地,并广播更新,如果在线是另一种出路,则可以通过应用程序下载更新

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


这可以通过“广播更新”方法来解决,在这种方法中,您的服务器存储正在服务的设备列表(可以在应用程序安装时注册),并且每次有与某一组设备相关的更新时,您都可以向他们广播更新。(尝试使用这种方法。)

存储所有数据是否存在问题?是否存在某种存储限制?@ardavis当代设备有几GB的内存,这应该不是问题。如果您想针对旧设备,可以考虑将大部分数据保存到外部存储(SD卡),可选地加密保存的数据,因为外部存储不提供来自其他应用程序的任何访问保护。