Kotlin Android Extensions의 약자로 Android API에 대한 Kotlin 확장을 제공하는 라이브러리입니다.
Android에서는 사용자의 설정이나 앱의 내부 상태를 (key, value) 형식으로 저장하는 방법 중 하나로 SharedPreferences
를 사용합니다.
먼저, SharedPreferences
를 KTX와 함께 사용하려면 의존성을 추가해야 합니다.
// build.gradle(app)
dependencies {
implementation "androidx.core:core-ktx:x.y.z" // 버전은 프로젝트 상황에 맞게~!!
}
val sharedPreferences = context.getSharedPreferences("my_prefs", Context.MODE_PRIVATE)
KTX를 사용하면 아래와 같이 간단하게 가져올 수 있습니다.
val sharedPreferences = context.defaultSharedPreferences
기존 방법:
with(sharedPreferences.edit()) {
putString("key", "value")
apply()
}
KTX를 사용한 방법:
sharedPreferences.edit {
putString("key", "value")
}
Q: ?? 근데 저장은 어떻게 하나요?? apply하고 commit이 보이지 않는데요??
A: KTX 확장 함수는 내부적으로 apply()
를 호출하므로 별도로 호출할 필요가 없습니다.
@SuppressLint("ApplySharedPref")
public inline fun SharedPreferences.edit(
commit: Boolean = false,
action: SharedPreferences.Editor.() -> Unit
) {
val editor = edit()
action(editor)
if (commit) {
editor.commit()
} else {
editor.apply()
}
}
💡 commit을 호출하기 위해서는 commit 파라메터를 true로 설정해주시면 됩니다.
apply와 commit의 차이를 아시는 분께 저와 점심을 드실 수 있는 기회를 드리겠습니다. 물론 사드리는건 아닙니다 하핳
val value = sharedPreferences.getString("key", "default_value")
KTX를 사용하면 위 코드와 동일하게 동작합니다. 이 부분은 KTX 확장이 없어도 동일하게 사용됩니다.
기존 방법:
with(sharedPreferences.edit()) {
remove("key")
apply()
}
KTX를 사용한 방법:
sharedPreferences.edit {
remove("key")
}
Kotlin KTX는 Android의 여러 API에 대한 편리한 확장을 제공합니다. SharedPreferences
도 이러한 KTX를 활용하여 코드를 더 간결하고 읽기 쉽게 만들어봐요!!
특히 기존 코드와 KTX를 활용한 코드를 비교하면서 차이점을 확인하면 좋겠습니다~!!! 다들 화이팅