Попытка использовать класс Singleton в другом Singleton, но каким-то образом это дает мне утечки памяти.
Как я могу улучшить это?
Вот мой пример реализации синглтона
class FirstSingletonClass(val context: Context) {
companion object {
@Volatile
private var instance: FirstSingletonClass? = null
fun getInstance(context: Context): FirstSingletonClass =
instance ?: synchronized(this) {
instance ?: FirstSingletonClass(context).also { instance = it }
}
}
private val sSingletonClass: SecondSingletonClass = Injection.provideSecondSingletonClass(context)
}
Блок SecondSingletonClass
class SecondSingletonClass(val context: Context) {
companion object {
@Volatile
private var instance: SecondSingletonClass? = null
fun getInstance(context: Context): SecondSingletonClass =
instance ?: synchronized(this) {
instance ?: SecondSingletonClass(context).also { instance = it }
}
}
private val fSingletonClass: FirstSingletonClass = Injection.provideFirstSingletonClass(context)
}
Класс инъекции
object Injection {
fun provideSecondSingletonClass(context: Context): SecondSingletonClass = SecondSingletonClass.getInstance(context)
fun provideFirstSingletonClass(context: Context): FirstSingletonClass = FirstSingletonClass.getInstance(context)
}
Так что, когда я инициализирую свойство - private val sSingletonClass
или private val fSingletonClass
, это приводит к утечкам памяти.Но если я назову свой одноэлементный класс где-нибудь в функциональном блоке, он будет работать нормально
Можно ли достичь того, чего я хочу?Или я должен использовать это явно ...