본문 바로가기

안드로이드

[안드로이드] SharedPreferences 사용법 및 저장

728x90
반응형

 

 

 

 

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

 

SharedPreferences로 단순 데이터 저장하기  |  Android Developers

DataStore offers a more modern way of storing local data. You should use DataStore instead of SharedPreferences. Read the DataStore guide for more information. 이 페이지는 Cloud Translation API를 통해 번역되었습니다. SharedPreferences로 단

developer.android.com

 

728x90
반응형