Расскажи о самой критической ошибке, с которой столкнулся

«Расскажи о самой критической ошибке, с которой столкнулся» — вопрос из категории Софт-скиллы, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый пример ответа, который можно адаптировать под свой опыт.

Ответ

Одна из самых критических ошибок — утечка памяти в 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.