Утечка памяти в сопутствующих объектах Kotlin? - PullRequest
0 голосов
/ 31 августа 2018

Я использую Kotlin для разработки под Android. Интересный вопрос В Java сохранение контекста в статическом поле - это утечка памяти. Но если я храню контекст в сопутствующем объекте Kotlin, Android Studio не говорит, что это утечка памяти. Это значит, что в Java объект сопутствующего байт-кода не является статическим кодом? Например:

class MyApp : Application() {
    override fun onCreate() {
        super.onCreate()
        appContext = applicationContext
    }

    companion object {
        lateinit var appContext: Context
    }
}

Здесь нет утечки памяти? Спасибо за ответы:)

1 Ответ

0 голосов
/ 31 августа 2018

Ваш код на самом деле хранит Context в статическом виде, просто ворс не может его поднять и по какой-то причине предупредить вас.

В этом конкретном случае, однако, вы на самом деле не рискуете создать утечку памяти. Вы статически храните свой Application объект, который будет работать всю жизнь вашего приложения - как статические переменные. У вас были бы проблемы, если бы это был какой-то другой, короче Context, но приложение Context должно быть в порядке.

Для справки о том, безопасно ли это делать:

...