kotlin을 사용하여 안드로이드에 SharedPreference
의 도우미 클래스를 만들고 싶습니다. 불행히도 Context
이 필요하며 매번 통화를 선호하는 매개 변수로 설정하고 싶지 않습니다.안드로이드 - SharedPreferences - 컨텍스트
내가 컨텍스트에 대한 동반자 객체를 사용하고 난 다음 오류 얻을 응용 프로그램 시작시 설정하면 :
Do not place Android context classes in static fields; this is a memory leak (and also breaks Instant Run)
그래서 어떻게 매번 내가 환경 설정을 호출 거치지 않고 컨텍스트를 얻을 수 있습니까?
var isWorking: Boolean
get() = getBoolean(IS_WORKING)
set(isWorking) = setPreference(IS_WORKING, isWorking)
private fun setPreference(key: String, value: Boolean) {
val editor = settings.edit()
editor.putBoolean(key, value)
editor.commit()
}
private val settings: SharedPreferences by lazy {
context.getSharedPreferences("prefs", Context.MODE_PRIVATE)
}
이 질문에 대한 대답은 아니지만 매번 컨텍스트를 전달해야합니다. 메시지가 말하기를, 활동이 끝났을 때 작업이 여전히 실행 중이면 활동이 누수 될 수 있습니다. 내 경험에 비추어 볼 때, 어떤 작업이있을 때 컨텍스트를받는 PreferenceHelper 클래스를 항상 보았습니다. –