[Android/Kotlin]SharedPreferences

최지원·2024년 1월 30일
0

[Android/Kotlin]

목록 보기
5/9
post-thumbnail

📌SharedPreferences?

SharedPreferences는 Room과 마찬가지로 localDB에 데이터를 저장하는 도구라고 할 수 있습니다. 그러나 SharedPreferences는 Room에 비해 데이터가 비교적 작은 편이라 큰 DB가 필요 없는경우, 또는 임시적으로 데이터를 저장해야하는 경우에 사용됩니다.

SharedPreferences사용방법

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <Button
        android:id="@+id/saveButton"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintBottom_toTopOf="@id/getButton"
        app:layout_constraintVertical_chainStyle="packed"
        android:text="저장하기"/>
    <Button
        android:id="@+id/getButton"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintTop_toBottomOf="@id/saveButton"
        app:layout_constraintBottom_toTopOf="@id/deleteButton"
        android:text="읽어오기"/>
    <Button
        android:id="@+id/deleteButton"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintTop_toBottomOf="@id/getButton"
        android:text="삭제하기"/>

</androidx.constraintlayout.widget.ConstraintLayout>

MainActivity.kt

class MainActivity : AppCompatActivity() {

    private lateinit var binding: ActivityMainBinding
    private lateinit var sharedPreferences: SharedPreferences

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        binding = ActivityMainBinding.inflate(layoutInflater)
        setContentView(binding.root)

        sharedPreferences = getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE)

        binding.saveButton.setOnClickListener {
            if (binding.saveText.text.isNotEmpty()){
                sharedPreferences.edit().apply(){
                    putString(TEXT, binding.saveText.text.toString())
                    apply()
                }
                binding.saveText.text = null
            }
        }
        binding.getButton.setOnClickListener {
            val getText = sharedPreferences.getString(TEXT, null)
            binding.getText.text = getText
        }

        binding.deleteButton.setOnClickListener {
            sharedPreferences.edit().remove(TEXT).apply()
        }
    }

    companion object {
        private const val PREFS_NAME = "sharedPreferences"
        private const val TEXT = "text"
    }
}


다음과 같이 간단하게 데이터를 저장하고 읽어올 수 있습니다.
주의해야 할 점은, sharedPreferences에 저장할 때 key값 하나당 하나의 value만 들어가므로,
이미 value가 저장되어 있는 key값에 다른 value가 들어갈 경우 덮어씌워지므로 이점을 주의해야합니다.

profile
안드로이드, 플러터 주니어입니다

0개의 댓글