SharedPreferences 똑똑하게 사용하기.
예전에 우리가 자바에서 사용하던 방법
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
SharedPreferences.Editor editor = preferences.edit();
editor.putString("key","value");
editor.apply();
코틀린으로 사용하면?
private val pref = PreferenceManager.getDefaultSharedPreferences(context)
@Suppress("IMPLICIT_CAST_TO_ANY")
fun<T> get(key: String, defaultValue: T): T {
return when (defaultValue) {
is String -> pref.getString(key, defaultValue)
is Int -> pref.getInt(key, defaultValue)
is Boolean -> pref.getBoolean(key, defaultValue)
is Float -> pref.getFloat(key, defaultValue)
is Long -> pref.getLong(key, defaultValue)
else -> throw UnsupportedOperationException("Not yet implemented")
} as T
}
Config같은 것을 저장해야 하는데 DB는 번거롭다.
gson을 사용하여 json형태로 저장
val res = Gson().toJson(jsonText)
pref.save(key, res)
gson을 이용하여 클래스를 꺼내기
fun getConfig(sharedPref: SharedPreferenceProvider, key: String) : Config {
var res = sharedPref.get(key, "")
val type = object : TypeToken<Config>() {}.type
if(res.isEmpty()) {
res = Link().toString()
}
return Gson().fromJson(res, type)
}
gson을 이용하여 리스트를 꺼내기
fun getConfig(sharedPref: SharedPreferenceProvider) : List<Config> {
var res = sharedPref.get("key", "")
val type = object : TypeToken<List<Config>>() {}.type
if(res.isEmpty()) {
res = emptyArray<List<Config>>().asList().toString()
}
return Gson().fromJson(res, type)
}
출처: https://akaisun.tistory.com/66?category=622886 [아카이의 개발창고]
'안드로이드 > 개발 TIP' 카테고리의 다른 글
progress wrapper (0) | 2020.12.09 |
---|---|
바코드, QR CODE 생성 및 스캐너 (0) | 2020.12.09 |
webview scroll detecting (0) | 2020.12.09 |
Room에서 LiveData사용과 paging처리 (0) | 2020.12.09 |
x86 emulation currently requires hardware acceleration (0) | 2020.12.09 |
library version check (0) | 2020.12.09 |
log 관리하기 (0) | 2020.12.09 |
안드로이드 4+버전에서 애드몹이 안보이는 현상 (0) | 2020.12.09 |