В настоящее время я занимаюсь рефакторингом старого проекта и решил использовать Room DAO.Этот проект использует Курсор для отображения длинного списка объектов.Ok Room DAO имеет возможность вернуть Курсор.
@Query("SELECT * FROM user")
public Cursor loadUsers();
Но официальная документация не рекомендует нам его использовать
Внимание: крайне не рекомендуется работать с API-интерфейсом Cursor, потому что он не гарантирует, существуют ли строки или чтозначения строки содержат.Используйте эту функциональность, только если у вас уже есть код, который ожидает курсор и который вы не можете легко изменить.
Документация предлагает сделать таким образом
@Query("SELECT * FROM user")
public List<User> loadUsers();
Мои опасениячто это на самом деле будет получать все данные из таблицы и хранить их в памяти (я что-то пропустил?).В отличие от курсора содержит только кучу данных (окно) и выбирает новую порцию по требованию.
Итак, вопрос в том, как выполнять запросы к большой базе данных с использованием Room DAO, сохраняя низкое потребление памяти?