【发布时间】:2017-09-12 13:57:53
【问题描述】:
我在我的应用程序中创建了一个data repository layer,它反过来提供来自两个来源的数据,要么是网络 API 调用,要么是从本地存储中获取数据。当有对data repository layer的请求时,我首先需要检查数据是否存在于本地存储中。如果没有,我会调用我的 API 来获取数据。为了检查数据是否在本地存储中,我想了两种方法来实现:
- 在应用程序启动时,我将数据库中的所有数据加载到内存中(例如列表、地图等),然后每当我必须检查本地存储中是否存在数据时,我都会从内存中进行检查。这有一个我之前也遇到过的可能问题。当应用程序处于后台时,Android 系统可能会清除此分配的内存以将内存提供给其他应用程序。这让我觉得事情变得复杂了。
- 每当我想检查本地存储中是否存在数据时,我都会直接查询 SQL 表并据此决定。这比上述案例更精简和更清洁的解决方案。我唯一担心的是性能下降。 我想知道SQLite数据库加载到内存后是否运行?如果是,那么我上面创建的数据的内存层就没有用了。 如果不是,对于每个小数据请求继续查询 SQLite 数据库是否安全?
【问题讨论】:
-
您可能会发现这很有趣 In-Memory Databases 两者兼而有之,也可能是 Advantages of an in-memory Database in SQLite
标签: android database sqlite memory database-performance