我正在开发一个Android应用程序,我正在向服务器发送许多RESTful请求以获取信息。我应该总是提出这些请求,还是将其中的一些请求存储在设备上的SQLite数据库中?如果我应该存储,我如何确定应该存储多少(如果不是全部)数据?
该应用程序属于教育社交网络,因此有以下对象:
目前计划是将信息存储在数据库中并经常检查更新,还是应该始终从服务器请求数据?另外,我应该在单个请求中提取嵌套数据还是将其拆分为多个RESTful请求?
答案 0 :(得分:1)
最佳解决方案是将所有存储在本地的数据中,有时只需启动AsyncTask
或AsyncLoader
即可下载更新。这样,您的用户就可以在离线时使用您的应用程序,并且无需等待应用程序启动时完成下载。
您应该始终要显示一些数据。将基本数据集与应用程序一起包含可能很有用,因此即使没有网络,数据库也会在第一次运行时填充。
regarding single vs multiple requests:
单个请求通常比几个较小的请求更快,但是,它在移动网络上失败的可能性更高。如果您的数据请求在GSM网络上的占用时间不超过10秒,那么您应该没问题,否则您可能会考虑拆分为较小的请求。
答案 1 :(得分:1)
虽然在本地存储所有(相关)数据是一种选择,但它有时会变得非常庞大,如果您的应用程序繁荣,那么所需的空间也将如此。而是在本地保留相关数据的最新副本,并广播可由您的应用程序下载的更新(如果在线是另一种方法)。
鉴于您的应用是一种社交网络,您可能希望最新的更新在用户可用时尽快到达。本地存储并定期触发异步任务意味着您要修复更新延迟(这将等于异步任务运行与任务运行时间之间的延迟)。此外,很多时候可能没有更新,你将毫无意义地查询服务器。
这可以通过“广播更新”方法来解决,其中您的服务器存储所服务的设备列表(可以在应用安装时注册),并且每次有与某组设备相关的更新时你可以将更新广播给他们。 (尝试Google Cloud Messaging开始这种方法。)