Android

[Android] SharedPreferences 간단하게 사용하기 (Kotlin)

728x90

 

 

 안드로이드 앱을 개발하면서 데이터를 저장하는 방법으로는 여러 가지가 있는데, 오늘은 그중 하나인 SharedPreferences를 사용하는 방법을 알아볼 것이다. 

 

SharedPreferences란?

 SharedPreferences는 간단한 값을 저장할 때 주로 사용한다. 초기 설정 값이나 자동 로그인 여부 등 간단한 값을 저장할 때 DB를 사용하면 복잡하기 때문에 SharedPreferences를 사용하면 적합하다.

 SharedPreferences는 어플리케이션에 파일 형태로 데이터를 저장한다. 데이터는 (key, value) 형태로 data/data/패키지명/shared_prefs 폴더 안에 xml 파일로 저장된다. 해당 파일은 어플리케이션이 삭제되기 전까지 보존된다.

 

 

 

SharedPreferences 사용하기

 SharedPreferences는 앱의 어디서든 전역적으로 사용하기 때문에 싱글톤 패턴을 사용해서 어디서든 접근 가능하게 만드는 것이 좋다.

 SharedPreferences 클래스는 앱에 있는 다른 액티비티보다 먼저 생성되어야 다른 곳에 데이터를 넘겨줄 수 있다. 이러기 위해서는 Application에 해당하는 클래스를 생성한 뒤, 전역 변수로 SharedPreferences를 가지고 있어야 한다. Application()을 상속받는 MyApplication 클래스를 생성하여, onCreate()보다 먼저 prefs를 초기화 해준다.

MyApplication.kt

class MyApplication : Application() {
    companion object {
        lateinit var prefs: PreferenceUtil
    }

    override fun onCreate() {
        prefs = PreferenceUtil(applicationContext)
        super.onCreate()
    }
}

 

MyApplication 클래스를 생성했다면, Manifest에 등록해줘야 한다.

AndroidManifest.xml

<application
    android:name="com.example.test.MyApplication"
    ...
</application>

 

 다음은 SharedPreferences를 변수로 가지고 있는 PreferenceUtil 클래스를 생성한다. getString()과 setString() 메소드를 만들어서 SharedPreferences에 접근하여 데이터를 저장하거나 가져올 것이다. 

PreferenceUtil.kt

class PreferenceUtil(context: Context) {
    private val prefs: SharedPreferences =
        context.getSharedPreferences("prefs_name", Context.MODE_PRIVATE)

    fun getString(key: String, defValue: String): String {
        return prefs.getString(key, defValue).toString()
    }

    fun setString(key: String, str: String) {
        prefs.edit().putString(key, str).apply()
    }
}

 

 

 데이터를 저장하거나 가져올 때는 아래의 예시코드를 사용해 접근하면 된다.

// 데이터 조회
MyApplication.prefs.getString("email", "no email")

// 데이터 저장
MyApplication.prefs.setString("email", "abcd@gmail.com")

 

728x90