SharedPreferences

창의덕후·2021년 9월 15일
0

안드로이드 공부

목록 보기
2/2

1. 정의

간단한 데이터의 저장을 목적으로 사용합니다.

SharedPreferences는 내부 저장소를 이용하기 때문에 권한 설정이 필요 없고 간단한 코드로 사용할 수 있습니다.

주로 로그인 정보나 앱의 상태 정보를 저장하는 용도로 사용되며, 액티비티에서 인텐트에 값을 넣고 빼는 것과 비슷한 형태도 동작합니다.

저는 기본적으로 다음 메서드를 작성하여 사용했습니다.

2. 사용법

1) Editor로 데이터 저장하기

fun setSharedData(name: String, key: String, data: Int) {
    var pref: SharedPreferences = getSharedPreferences(name, Activity.MODE_PRIVATE)
    var editor: SharedPreferences.Editor = pref.edit()
    editor.putInt(key, data)
    editor.apply()
}

getSharedPreferences() 메서드는 Context를 가지고 있는 모든 컴포넌트에서 접근화 호출이 가능합니다. 여기서 이름과 모드를 호출하면 이에 상응하는 SharedPreferences가 반환됩니다.

이후 SharedPreferences 객체에 edit() 메서드를 통해 Editor 인터페이스를 사용합니다.

이후 editor의 메서드(본 예시에선 putInt()) 를 사용해 '키'에 '값'을 넣습니다.

그리고 commit 혹은 apply를 하면 데이터를 저장할 수 있습니다.

이때 commit은 변경한 업데이트를 파일에 동기적으로 저장합니다. 동기 작업이기 때문에 메인 스레드를 사용하는 터라 화면이 잠시 멈출 수 있으며, 따라서 UI 스레드에서 호출하는 것을 피해야 합니다.

apply는 변경한 업데이트를 파일에 비동기적으로 저장합니다. 따라서 특별한 경우가 아니라면 apply() 메서드를 사용하는 것이 좋습니다.

2) 데이터 가져오기

fun getSharedIntData(name: String, key: String): Int {
    var pref: SharedPreferences = getSharedPreferences(name, Activity.MODE_PRIVATE)
    return pref.getInt(key, 0)
}

이름과 키에 해당하는 데이터를 가져옵니다.

먼저 getSharedPreferences 메서드를 통해 Sharedpreferences 객체를 가져오고, 이후 getOOO 메서드를 사용해 키에 상응하는 값을 가져옵니다.

이때 해당 키에 상응하는 데이터가 없다면 두 번째 파라미터에 적힌 디폴트 값을 반환합니다.

3. 마무리

생각보다 쉽게 사용할 수 있는 기능이기 때문에 앞으로도 자주 이용할 것 같습니다.

profile
끝없이 공부하는 개발자가 되자

0개의 댓글