Ответ
Одна из самых критических ошибок — утечка памяти в Activity из-за удержания ссылки на контекст в статическом поле. Например:
class LeakyActivity : Activity() {
companion object {
var context: Context? = null
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
context = this // Утечка! Activity не сможет быть собрана GC
}
}
Проблема: После поворота экрана старое Activity остается в памяти, так как статическое поле держит ссылку. Это приводит к утечке памяти и потенциальному OutOfMemoryError.
Решение: Использовать WeakReference или избегать статических ссылок на контекст/вьюхи. Для контекста лучше применять ApplicationContext, если не нужен именно Activity.
Ответ 18+ 🔞
Да ты посмотри на эту дичь, ёпта! Одна из самых пиздецовых ошибок, которая выносит мозг всем новичкам — это когда память утекает из Activity потому, что кто-то додумался запихнуть контекст в статическое поле. Ну реально, ядрёна вошь, смотри:
class LeakyActivity : Activity() {
companion object {
var context: Context? = null // Вот этот пидарас шерстяной!
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
context = this // Утечка, бля! Теперь твоё Activity не соберёт сборщик мусора НИКОГДА.
}
}
В чём, блядь, проблема-то? Представь: ты повернул телефон — бац, новое Activity создалось. А старое-то куда делось? А оно, сука, болтается в памяти, потому что на него ссылается это статическое поле context! Оно как призрак, блядь, не живое и не мёртвое. И так каждый раз поворот — новый призрак. В итоге получаешь OutOfMemoryError, и приложение накрывается медным тазом. Волнение ебать!
Как, блядь, лечить? Да похуй на статические ссылки на контекст, чувак! Если уж остро надо — используй WeakReference, чтобы ссылка была слабой и не мешала сборщику работать. А лучше вообще не трогай контекст Activity для долгоживущих вещей. Нужен просто контекст приложения? Бери ApplicationContext и не парься. Элементарно, Ватсон! А то смотришь на такой код и подозрение ебать чувствую — сейчас что-то пойдёт не так.