Ответ
Нет, сильная ссылка не всегда удаляется автоматически. Она удаляется только когда на объект больше нет сильных ссылок, что позволяет сборщику мусора освободить память.
Пример утечки:
class LeakyActivity : Activity() {
private val leak = object : SomeListener {
override fun onEvent() { /* ... */ }
}
override fun onCreate() {
SomeSingleton.registerListener(leak) // Утечка: сильная ссылка в синглтоне
}
}
Здесь leak не удалится, пока жив SomeSingleton, даже если LeakyActivity уничтожена.
Используйте слабые ссылки (WeakReference) или явный unregister, чтобы избежать утечек.