Приложение на базе базы данных Android - ООП подход, вопросы сбора мусора

1

Я делал свои первые шаги, когда андроид писал менеджеру денег. Он хранит данные в базе данных SQLite, и мой подход был в основном процедурным, в то время как я его создавал.

Это означает: когда я создаю диаграмму или сводку, она выглядит так:

  1. Я создаю курсор базы данных
  2. Я перебираю этот курсор для сбора необходимых данных
  3. Я передаю данные непосредственно элементу, который мне нужен (например, диаграмма или список)

Ну, это работает, но сейчас я изучаю больше, и я хотел бы перестроить свое приложение. Я не полностью осведомлен о ограничениях памяти на мобильных устройствах, поэтому я создаю этот поток.

Я придумал две идеи. Скажите, пожалуйста, какой из них, по вашему мнению, лучше (или как-то поправьте мой подход, если он полностью ошибается).

Давайте рассмотрим пример создания диаграммы или списка, как раньше. Теперь я сделаю так:

  1. Я создаю курсор базы данных.
  2. Я создаю количество объектов, равное количеству записей, которые мне нужны для представления данных.
  3. Я использую созданные объекты для передачи данных в диаграмму или список.

Это потребует большего количества кода, чем мой процедурный подход, но использование его должно быть намного проще, и код будет иметь более "профессиональный" внешний вид (исправьте меня, если я ошибаюсь).

Однако я получил эту дилемму. Скажем, я создаю набор объектов на основе данных из таблицы "затраты". Я использую их для представления диаграммы или списка в одном из моих действий. После того, как я закрыл свою деятельность, я больше не нуждаюсь в них. Что я должен сделать, чтобы позволить сборщику мусора отбросить их. Что-нибудь особенное? (да, я новичок в сборщике мусора).

Существует также второй подход oop, но я знаю, что для этого потребуется много памяти, и я не уверен, что это хорошая идея. Итак, вернемся к примеру снова:

  1. Я создаю курсоры для каждой таблицы, которую я получил
  2. Я создаю набор объектов, соответствующих таблицам - в основном я передаю все таблицы в набор объектов для дальнейшего использования (я делаю это в потоке с некоторым индикатором выполнения, если необходимо)
  3. Я использую созданные объекты в любое время, когда мне нужно представить свои данные.

Звучит глупо, да? Я не уверен, когда сборщик мусора будет располагать все эти объекты, и если это хорошая идея спамить память с этим объемом данных за один раз.

Спасибо за любые комментарии по этому поводу.

Теги:
object
oop
garbage-collection

1 ответ

0

Оба решения работают, но первый лучше, потому что объекты помечены для GC, как только они выходят из сферы действия, что происходит намного раньше, чем если они сохраняются для последующего использования. Когда объекты GCed, память, которую они занимают, становится доступной.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню