30

为什么我们在android中使用sqlite数据库。我正在开发一个android应用程序,其中数据将从服务器获取并进行一些数据计算并在UI上显示。

将数据提取到 sqlite DB 并在每 20 分钟内定期从 sqlite 更新 UI 对我有好处吗?或者将 Http get 请求发送到服务器并从响应中更新数据会更好吗用户界面。

我想知道哪一个会更好,为什么?为什么要涉及 sqlite DB?数据对应一些 40X40 的表格数据,需要对其进行一些繁重的数学处理,然后显示在 UI 上(类似于股票市场应用程序),并且需要每隔 12 小时清除一次数据。PLZ建议Rgds,劳尔

4

5 回答 5

28

在您的情况下使用数据库很好。

优点:

  • 如果您的应用程序关闭,内存中的数据将丢失,但之后您将能够从数据库中恢复状态(如果您有一个)
  • 特别是对于复杂计算的情况,最好将结果一次存储在数据库中,而不是按需重新计算多次
  • 数据库会将您的 UI 与 Internet 连接解开,因此即使没有 Internet 连接,您也可以显示结果
  • 使用数据库,您将能够从后台服务获取更新的数据,而不会影响您的 UI
  • 在数据库中组织数据通常可以更轻松地管理所有应用程序数据。

缺点:

  • 添加数据库将需要您付出一些额外的努力

如您所见,我的列表证明您应该在您的情况下使用数据库。也许我有偏见,但至少我为您提供了要考虑的事情。

于 2012-04-26T08:43:59.057 回答
4

这确实是一个设计决策,SQLite 提供了一种非常健壮的方式来组织和持久化您的数据,您唯一的其他选择是写入文件或保存在 SharedPrefs 中,一旦大小达到您的数据开始增长,因为您必须手动保留对象列表并管理它们的名称等。40 x 40 的表数据足以证明使用 SQLite 是合理的,即使您每 12 小时删除和重新创建表也是如此。

您可能需要考虑使用 ORM 库来更简单地从数据库中获取和保存数据,ORMLite 很好并且与 Android 兼容

http://ormlite.com/

于 2012-04-26T08:42:55.870 回答
3

如果您的应用程序严重依赖 Internet 连接,则无需在数据库中缓冲信息。但是,如果您想使用信号不佳或没有信号的应用程序,您可能需要使用 sqlite 数据库中的缓存值。由于互联网连接速度较慢,您的应用程序可能没有响应,因此缓存可能是一个好主意 - 但它不一定在 sqlite 数据库中。您应该将 sqlite 数据库用于设备经常需要且与您的服务器组件无关的数据。如果数据频繁更新但仅在应用程序运行时更新,您可能希望缓存在设备内存中。我假设您的应用程序在 12 小时内并未一直运行,而是定期调用以检查某些内容。

于 2012-04-26T08:43:12.490 回答
0

12 小时是很长的时间,所以不要让你的数据在 RAM 中徘徊,我建议你使用数据库。因为你永远不知道什么时候可能需要再次阅读它。

否则,如果您的目的只是下载数据、处理数据并在活动中显示,那么您不需要涉及数据库,因为如果您的应用程序已关闭(由于用户或内存不足),无论如何您的应用程序将从服务器……我说的对吗?

于 2012-04-26T08:41:53.033 回答
0
> update the UI on regular interval from the sqlite in evry 20 minutes 

不要指望您的应用程序会打开这么长时间。

准确建议您的情况

 Avoid DB 

 Fetch Data at app start or at appropriate time when app is opened 
 and save it in plain java objects.

 Define Methods within it that perform operation in it.

 Make map or list to save those POJO

 Define Seprate Controller Classes within your project to update map of pojo at any     
 specific change to make fresh data available to UI.
于 2012-04-26T08:53:55.747 回答