Методы использующие Context в произвольных классах

Изучаю Android разработку и столкнулся с вопросом. Допустим я создаю произвольных класс и там мне нужно вызвать метов требующий Context (или в параметры мне нужно передать Activity). Например, я создаю View элемент, допустим Button, и я не смогу использовать метод findViewById. Что делать в таких ситуациях? Разумно ли в конструктор этого класса передавать Context?


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

Автор решения: Sergei Buvaka

Смотрите. Тут стоит разделить эти классы на несколько категорий.

  • Классы, наследующие View или VuewGroup. Эти классы уже хранят в себе ссылку на Context. Туда ничего прокидывать не надо. Точнее там Context по дефолту должен быть в конструкторе. И использование там контекста легетимно и вполне нормально.

  • Классы которые требуют для работы контекст(Например SQLite). Для этих классов зачастую достаточно Application Context. Application Context не влечет за собой риска Memory Leak и его использовать вполне безопасно.

  • Во всех остальных случаях, нужно стараться избегать использовать Context. Во-первых передача контекста Activity влечет за собой риск утечек памяти. Во-вторых классы которые хранят в себе Context сложно тестировать. Но это не значит, что этого делать нельзя. Иногда можно и даже нужно, но всегда нужно позаботиться о том, чтоб при уничтожении Activity очищалась и ссылка на нее.

→ Ссылка