Когда вы вызываете getInstance()
в первый раз, Context
, который вы передаете этой функции, сохраняется навсегда.Таким образом, контекст в последующих getInstance()
вызовах не имеет никакого отношения к этому.Я никогда не сохраняю это Context
.
Вот что я делаю:
Создайте object
в Kotlin и инициализируйте объект контекстом, как только приложение запустится.Вместо сохранения контекста я выполняю любую операцию с этим контекстом.
object PreferenceHelper {
private var prefs: SharedPreferences? = null
fun initWith(context: Context){
if(prefs == null) this.prefs = context.getSharedPreferences("prefs", Context.MODE_PRIVATE)
}
fun someAction(){ .... }
}
и внутри класса Application
:
class MyApp: Application(){
override fun onCreate(){
PreferenceHelper.initWith(this)
}
}
и далее в любом месте приложения:
PreferenceHelper.someAction()
Вы можете сделать это, если вам не нужна ссылка на Context
каждый раз, когда вы выполняете что-то с классом Singleton.