Ссылки на activity и утечки памяти

Есть активити. В нём есть разные блоки (например, некая форма из нескольки полей). Хочется поведение этих блоков вынести в отдельные классы.

  • Создаю класс, скажем, MyBlock
  • В onCreate() активити создаю объект, передавая ему:
    • ViewGroup - контейнер блока
    • Ссылку на само активити - нужна для проброса событий и context для создания новых элементов внутри
    • Объект ещё вешает на элементы обработчики для onClick и другие
  • Сохраняю ссылку на объект в свойстве объекта activity - нужна для взаимодействия с ним
  • И таких свойств может быть несколько, включая списки однотипных объектов

Вопрос: как тут обстоит дело с утечками памяти?

Активити может часто уничтожаться/пересоздаваться. Советуют "не держать ссылку на активити в объектах, которые живут дольше этого активити". В моём примере они жить дольше не должны. Однако, тут образуется множество циклических ссылок. Сможет ли сборщик мусора их корректно разрулить?

Стоит ли (и поможет ли) в activity.onDestroy() дестроить все связанные объекты и обнулять ссылки на них?


Ответы (0 шт):