Методы использующие Context в произвольных классах
Изучаю Android разработку и столкнулся с вопросом. Допустим я создаю произвольных класс и там мне нужно вызвать метов требующий Context (или в параметры мне нужно передать Activity). Например, я создаю View элемент, допустим Button, и я не смогу использовать метод findViewById. Что делать в таких ситуациях? Разумно ли в конструктор этого класса передавать Context?
Ответы (1 шт):
Смотрите. Тут стоит разделить эти классы на несколько категорий.
Классы, наследующие
ViewилиVuewGroup. Эти классы уже хранят в себе ссылку наContext. Туда ничего прокидывать не надо. Точнее тамContextпо дефолту должен быть в конструкторе. И использование там контекста легетимно и вполне нормально.Классы которые требуют для работы контекст(Например
SQLite). Для этих классов зачастую достаточно Application Context. Application Context не влечет за собой риска Memory Leak и его использовать вполне безопасно.Во всех остальных случаях, нужно стараться избегать использовать
Context. Во-первых передача контекстаActivityвлечет за собой риск утечек памяти. Во-вторых классы которые хранят в себеContextсложно тестировать. Но это не значит, что этого делать нельзя. Иногда можно и даже нужно, но всегда нужно позаботиться о том, чтоб при уничтоженииActivityочищалась и ссылка на нее.