У меня есть пользовательское представление, которое загружает объект модели (назовем его Person
, почему бы и нет).Эти объекты хранятся в БД, получаются через Loader
и вставляются в ListView
через CursorAdapter
, который создает указанные виды.Пока все хорошо.
Теперь у Person
есть ссылка на другой объект модели, скажем, Country
.Countries
находятся в отдельной таблице, и мне нужно название страны (конечно, с идентификатором), чтобы представить ее в элементах списка.
Я вижу три варианта:
Запросите базу данных из метода view, который загружает данные Person (setPerson()
?).
Глубокая предварительная загрузка (кажется, я только что составил терминизвините) объекты моей модели с информацией о стране.
Запросить асинхронный запрос данных страны и затем вернуть их в пользовательский интерфейс.
Проблема с (1) заключается в том, что пользовательский интерфейс может блокироваться.Проблема с (2) состоит в том, что это приводит к сильному дублированию данных в памяти.Проблема с (3) в том, что он усложняет поток, может быть излишне.
Что мне делать?Важен ли показатель производительности (1)?Может быть (1), запросить данные из представления, но реализовать кеш, чтобы избежать повторного попадания в базу данных для одного и того же Country
?Может быть (2), с указанным уровнем кэша, чтобы обеспечить уникальность экземпляров объекта?4-й вариант я не рассматривал?Что делают ORM?
Спасибо!