[안드로이드] SharedPreferences 사용법 및 저장
Android 앱을 만들다 보면 간단한 데이터를 저장하고 읽어오는 SharedPreferences를 많이 사용합니다.
SharedPreferences란 무엇일까요?
-> 간단한 키-값 쌍 형태로 데이터를 저장하고 읽는 데 사용되는 Android의 내장 API입니다.
내부적으로 XML 파일 형식으로 데이터를 저장하고, data/패키지명 폴더에서 'shared_prefs' 이름으로 저장됩니다.
사용하는 방법
- 전역적으로 사용하기 위해 Application 내에서 초기화하는 방법으로 예제를 짜보겠습니다.
SharedPreferenceUtil.kt
object SharedPreferenceUtil {
private const val PREFS_NAME = "com.example.share"
private lateinit var preferences: SharedPreferences
fun init(context: Context) {
preferences = context.getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE)
}
fun setName(name: String) {
preferences.edit().putString("name", name).apply()
}
fun getName(): String? {
return preferences.getString("name", null)
}
}
ShareApplication.kt
import android.app.Application
class ShareApplication: Application() {
override fun onCreate() {
super.onCreate()
SharedPreferenceUtil.init(this)
}
}
MainActivity.kt
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.Button
import android.widget.EditText
import android.widget.TextView
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val editText = findViewById<EditText>(R.id.editText)
val helloText = findViewById<TextView>(R.id.welcomeTexView)
val saveButton = findViewById<Button>(R.id.saveButton)
val savedName = SharedPreferenceUtil.getName()
if (savedName != null) {
helloText.text = "안녕하세요, ${savedName}님"
}
saveButton.setOnClickListener {
val myName = editText.text.toString()
if (myName.isNotEmpty()) {
SharedPreferenceUtil.setName(myName)
helloText.text = "반가워요, ${myName}님"
}
}
}
}
위 코드처럼 간단히 짜보겠습니다.
처음은 이름이 아무 것도 입력되지 않아 TextView가 보이지 않습니다.
이름을 입력하고 save button을 누르면 SharedPreferenceUtil에 setName이 되어서 TextView가 반가워요, -님하고 뜹니다.
앱을 다시 재실행 해주면
SharedPreferenceUtil의 getName()을 통해 저장된 이름을 보여주고 안녕하세요, -님이라고 뜨는 것을 볼 수 있습니다.
위에 SharedPreferences 설명에서 xml 형태로 저장된다고 나와있었습니다.
애뮬레이터에서 이 xml이 어디 있나 찾아보겠습니다!
Android Studio -> View -> Tool Windows -> Device Explorer을 눌러줍니다.
누르면 아래처럼 뜨는데요.
data/data/com.example.share/shared_prefs 폴더를 찾아봅니다!
xml을 열면 아래와 같이 입력된 이름이 xml에 저장된 것을 볼 수 있습니다.
감사합니다 ~~
흠 ..
SharedPreferences 공식 홈페이지에 들어갔더니
DataStore를 사용해 보라고 권장하고 있습니다.
다음엔 DataStore 예제로 돌아오겠습니다
감사합니다!
참고
https://developer.android.com/training/data-storage/shared-preferences?hl=ko