首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我应该在设备上存储什么样的信息,而不是通过网络请求?

我应该在设备上存储什么样的信息,而不是通过网络请求?
EN

Stack Overflow用户
提问于 2012-11-25 03:50:04
回答 2查看 44关注 0票数 0

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

该应用程序是一种教育社交网络,因此有一些对象,如:

  • 用户
  • 学校
  • 备注
  • 课程
    • 评论
    • 问题

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-11-25 04:08:16

最好的解决方案是存储所有本地数据,有时启动AsyncTaskAsyncLoader下载更新。这样,您的用户就可以在离线时使用您的应用程序,而无需等到下载完成后,应用程序才会启动。

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

代码语言:javascript
复制
regarding single vs multiple requests:

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

票数 1
EN

Stack Overflow用户

发布于 2012-11-25 05:19:28

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

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

这可以与“广播更新”方法进行斗争,在这种方法中,您的服务器存储正在服务的设备列表(可以在应用程序安装时注册),而且每次有与某一组设备相关的更新时,您都可以向他们广播更新。(请使用Google消息传递作为这种方法的起点。)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13548084

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档