【问题标题】:Are SQLite database operations in Android in memory?Android中的SQLite数据库操作是否在内存中?
【发布时间】:2017-09-12 13:57:53
【问题描述】:

我在我的应用程序中创建了一个data repository layer,它反过来提供来自两个来源的数据,要么是网络 API 调用,要么是从本地存储中获取数据。当有对data repository layer的请求时,我首先需要检查数据是否存在于本地存储中。如果没有,我会调用我的 API 来获取数据。为了检查数据是否在本地存储中,我想了两种方法来实现:

  • 在应用程序启动时,我将数据库中的所有数据加载到内存中(例如列表、地图等),然后每当我必须检查本地存储中是否存在数据时,我都会从内存中进行检查。这有一个我之前也遇到过的可能问题。当应用程序处于后台时,Android 系统可能会清除此分配的内存以将内存提供给其他应用程序。这让我觉得事情变得复杂了。
  • 每当我想检查本地存储中是否存在数据时,我都会直接查询 SQL 表并据此决定。这比上述案例更精简和更清洁的解决方案。我唯一担心的是性能下降。 我想知道SQLite数据库加载到内存后是否运行?如果是,那么我上面创建的数据的内存层就没有用了。 如果不是,对于每个小数据请求继续查询 SQLite 数据库是否安全?

【问题讨论】:

标签: android database sqlite memory database-performance


【解决方案1】:

SQLite 会缓存一些数据,Android OS 会将数据库文件保存在其文件缓存中,只要内存足够。

因此,当使用 SQLite 时,应用的性能会根据可用内存自动优化。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-03
    • 1970-01-01
    • 1970-01-01
    • 2011-03-09
    相关资源
    最近更新 更多