예전에 우리가 자바에서 사용하던 방법
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)
}
'안드로이드' 카테고리의 다른 글
webview scroll detecting (2) | 2019.09.06 |
---|---|
Room에서 LiveData사용과 paging처리 (2) | 2019.09.05 |
x86 emulation currently requires hardware acceleration (2) | 2019.02.22 |
library version check (4) | 2016.10.30 |
log 관리하기 (5) | 2016.09.28 |
댓글