【问题标题】:Why to use sqlite Database in Android?为什么在 Android 中使用 sqlite 数据库?
【发布时间】:2012-04-26 08:35:10
【问题描述】:

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

将数据提取到 sqlite DB 并在每 20 分钟内从 sqlite 定期更新 UI 对我有好处吗? UI 上的响应。

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

【问题讨论】:

    标签: android web-services sqlite mobile


    【解决方案1】:

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

    优点:

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

    缺点:

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

    如您所见,我的列表证明您应该在您的案例中使用数据库。也许我有偏见,但至少我给你提供了一些可以考虑的东西。

    【讨论】:

      【解决方案2】:

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

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

      http://ormlite.com/

      【讨论】:

      • 我可以在 Android 上使用它吗?从 sqlite 会有多好?为什么比 Sqlite 更喜欢这个?Sqlite 是内置的,这是外部的(我可能必须使用它的 jar)
      • @softy Ormlite 只是辅助库,应该可以更轻松地使用 SQLite(制作对象关系映射)。基本上这样你就不用担心写/读过程了。我在Android中使用过它。此外,添加额外库对性能的影响是微不足道的。
      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

        12 小时是很长的时间,所以与其将数据留在 RAM 中,我建议您使用数据库。因为你永远不知道什么时候需要再读一遍。

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

        【讨论】:

        • 是的,数据将被添加(自动请求将在每 30 分钟后发送到服务器(可配置),当用户想要在 UI 上查看数据时,他必须手动按下/触摸一些UI按钮将显示数据(计算后),如果他在可配置的时间之前按下,数据将相同,如果他按下> 30分钟,他将获得最新的数据。
        • 那么我认为您不需要在您的要求中带来数据库的麻烦。在没有数据库的情况下,它非常简单直接
        【解决方案5】:
        > 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.
        

        【讨论】:

        • 在应用程序启动时或在应用程序打开的适当时间获取数据并将其保存在普通的 java 对象中。 >>>>>>>>> 在纯 java 对象中为 40X40 数据创建/组织数据会好吗? ,是的,它可以通过列表或字典映射。
        • 创建子类并在其中使用 DataStructure。一切都可以通过 OOPS 进行构图,即使是 80X80
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-11-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多