개발 공부/안드로이드

[android] SharedPreferences 파헤치기

yong_DD 2022. 4. 12. 22:54

간단하게 정보를 저장할 경우 SharedPreferences를 많이 사용하고 있다.

키-값으로 데이터를 저장하고 있으며 Int, Long, String, Double, Float, Boolean으로 저장 가능하다.

 

1. 사용 방법

val sharedPref = getSharedPreferences( "이름", Context.MODE_PRIVATE)

//저장
sharedPref.edit {
  putString("이름","저장 정보") //String 형으로 저장
  putInt("이름",0) //Int 형으로 저장
}

//값 꺼내기
sharedPref.getString("이름","") // sharedPref.getString("이름") 이렇게도 가능
sharedPref.getInt("이름",0)

1-1 값 가져오기 (예제 string)

public abstract String getString (String key, String defValue)

(defValue : String: Value to return if this preference does not exist. This value may be null. )

android developer를 보면 이렇게 나와있다.

기존에 저장했던 key의 값과 기존에 값이 없을 경우 가져오는 default값만 넣어주면 된다.

너무 쉽다 😀

1-2 값 저장하기 (commit/apply)

상단의 코드만 봐도 바로 쓸정도로 저장하는 코드는 어렵지 않다.

대신 여기에는 2가지의 저장 방법이 있다.

commit()은 모든 비동기 처리 / apply()는 동기 처리

commit은 모든 비동기 커밋이 완료될 때 까지 차단하기 때문에 저장하는 동안 UI가 멈추게 된다.

apply는 UI와 상관없이 바로 처리가 되지만 실패할 경우 알 수 없다.

 

// apply()
sharedPref.edit {
  putString("이름","저장 정보") 
}

// commit()
sharedPref.edit(true) {
  putString("이름","저장 정보") 
}

https://developer.android.com/reference/android/content/SharedPreferences.Editor?hl=ko#commit()

 

SharedPreferences.Editor  |  Android Developers

 

developer.android.com

 

1-3 모드(Operating mode)

모드에는 여러가지가 있다.(값에는 여러가지 있으나 현재는 하나만 쓰임)

기본적으로 쓰이는 MODE_PRIVATE가 있다.

같은 앱에서만 그 값을 사용할 수 있으며 타앱에서 접근할 수가 없다는 뜻!

(그 외 MODE_WORLD_READABLE, MODE_WORLD_WRITEABLE, MODE_MULTI_PROCESS가 있으나 현재 다 deprecated 되었다. )

 

[참고]

https://developer.android.com/training/data-storage/shared-preferences?hl=ko

https://developer.android.com/reference/android/content/SharedPreferences?hl=ko