【发布时间】:2018-06-02 11:56:10
【问题描述】:
目前我正在重构一个有点旧的项目,并决定使用 Room DAO。这个项目使用 Cursor 来显示一长串实体。 Ok Room DAO 具有返回光标的能力。
@Query("SELECT * FROM user")
public Cursor loadUsers();
但是官方文档不鼓励我们使用它
注意:强烈建议不要使用 Cursor API,因为 它不保证行是否存在或行的值是什么 包含。仅当您已有代码时才使用此功能 需要一个游标,并且您无法轻松重构。
文档建议这样做
@Query("SELECT * FROM user")
public List<User> loadUsers();
我担心的是这实际上会从表中获取所有数据并将它们保存在内存中(我错过了什么吗?)。相比之下,游标只保存一堆数据(窗口)并按需获取新部分。
所以问题是如何使用 Room DAO 进行大型数据库查询以保持低内存使用?
【问题讨论】:
标签: android android-room android-cursor