Расскажите про утечку Activity / Context
Утечка активити/контекста в Android это утечка памяти, вызванная тем что активити/контекст уже уничтожены, но на них все еще есть внешние ссылки(например в статик переменной). В итоге сборщик мусора не может удалить эту активити/контекст, хотя он по сути уже бесполезен, тк onDestroy() была вызвана. И так как активити и контекст это тяжелые объекты, которые занимают много места в памяти, то такая утечка в лучшем случае приведет к ухудшению быстродействия, а если таких утечек несколько то приложение вообще может вылететь, так как для него просто не хватит места в памяти.
При этом стоит понимать, что активити/контекст не обязательно должны напрямую лежать в статик переменной, они могут находится внутри другой переменной, которая будет в статике.
Вот пример того, как не надо делать:
open class Connection(
private val mActivity: Activity,
input: BufferedReader,
output: PrintWriter,
val host: Host,
private val mSendListener: SendListener,
receiveListener: ReceiveListener
)
object Const {
@JvmStatic
var currentConnection: Connection? = null
}
Учитесь в сообществе
AI Sprints — обучение профессиям с ИИ
Peer review и код от других студентов. Код-ревью от менторов. Учитесь не в одиночку, а в команде
- Peer review: проверяйте код других и получайте фидбек на свой — учитесь видеть ошибки
- Сообщество: чаты, обсуждения, помощь друг другу — не застрянете в одиночку
- Менторы: код-ревью от практикующих разработчиков на сложные задачи
AI Challenge — собери чат-бота за 5 дней
Бесплатный марафон по AI-инжинирингу. Cursor + OpenAI, 60 минут в день — без опыта в программировании. К пятнице у вас будет рабочий чат-бот с памятью в браузере.
- Практика с первого дня, без теории «в стол»
- Готовый проект в портфолио к концу недели
- Старт в любой день — учитесь в своём темпе