-
[Android] SharedPreferences안드로이드 2022. 3. 17. 17:00728x90반응형
SharedPreferences란
안드로이드 앱은 SharedPreferences를 통해 Integer, String 타입의 간단한 데이터를 저장할 수 있습니다. 단순히 숫자 몇 개, 문자열 몇 개를 저장하기 위해 SQLite나 서버 DB를 이용하기에 부담스럽기 때문에 SharedPreferences를 사용하는 것이 적합합니다.
특징👍🏻
- SharedPreferences는 간단한 데이터를 앱의 개별 저장소에 xml파일로 저장
- 앱이 삭제되기 전까지 저장한 데이터가 보존
- SharedPreferences 객체를 생성할 때 파일 이름을 인자로 전달하여, 그 이름으로 xml파일이 생성
- 데이터를 저장할 때는 key/value 형태로 저장
- SharedPreferences는 put/get메소드를 제공하여 데이터를 저장하거나 읽을 수 있음
사용 방법🤷🏻♂️
SharedPreferences 객체 생성
- getSharedPreferences() : 이름으로 식별되는 SharedPreferences 파일이 여러 개 필요한 경우 이 메서드를 사용합니다. 이름은 첫 번째 매개변수로 지정되고 앱의 모든 context에서 이 메서드를 호출할 수 있습니다.
- getPreferences() : Activity에 SharedPreferences 파일을 하나만 사용해야 하는 경우 Activity에서 이 메서드를 사용합니다. 이 메서드는 Activity에 속한 기본 SharedPreferences 파일을 검색하기 때문에 이름을 제공할 필요가 없습니다.
companion object { const val prefsName = "shared_preferences_example" } private lateinit var prefs: SharedPreferences override fun onCreate(savedInstanceState: Bundle?) { .... //SharedPreferences 객체생성 //1. getSharedPreferences() prefs = getSharedPreferences(prefsName,Context.MODE_PRIVATE); //2. getPreferences() prefs = getPreferences(Context.MODE_PRIVATE); }
값 저장하기🔍
SharedPreferences 파일에 값을 저장하려면 SharedPreferences에서 edit()함수를 통해서 만들게 됩니다.
putInt() 및 putString()과 같은 메서드를 사용하여 쓰려고 하는 키와 값을 전달합니다. 그런 다음 apply() 또는 commit()을 호출하여 변경사항을 저장합니다.
val prefs = getSharedPreferences("shared_preferences_example",Context.MODE_PRIVATE) ?: return with (prefs.edit()) { //"점수"라는 키값을 가진 데이터 80을 저장한다 putInt("점수", 80) commit() }
apply()는 메모리 내 SharedPreferences내 객체를 즉시 변경하지만 업데이트를 디스크에 비동기적으로 씁니다.
또는 commit()을 사용하여 데이터를 디스크에 동기적으로 쓸 수 있습니다.
그러나 commit()은 동기적이므로 기본 쓰레드에서 호출하는 것을 피해야 합니다. UI 랜더링이 일시중지될 수 있기 때문입니다.
값 불러오기👀
SharedPreferences에서 값을 검색하려면 getInt() 및 getString()과 같은 메서드를 호출하여 원하는 값에 키를 제공하고 키가 없으면 선택적으로 반환할 기본값을 제공합니다.
val prefs = getSharedPreferences("shared_preferences_example",Context.MODE_PRIVATE) ?: return //키가 없으면 선택적으로 반환할 기본값 val defaultValue = 60 //"점수"라는 키값을 가진 데이터를 가져온다 val highScore = prefs.getInt("점수", defaultValue)
값 삭제하기🙅🏻♂️
val prefs = getSharedPreferences("shared_preferences_example",Context.MODE_PRIVATE) ?: return with(prefs.edit()){ //"점수"라는 키값을 가진 데이터를 삭제합니다. val highScore = remove("점수") commit() }
출처
https://velog.io/@dlrmwl15/안드로이드-SharedPreferences
https://developer.android.com/training/data-storage/shared-preferences?hl=ko반응형728x90반응형'안드로이드' 카테고리의 다른 글
[Android] ConstraintLayout (0) 2022.03.19 [Android] Fragment에서 Google Map Api 사용하기 (0) 2022.03.18 [Android] Room 사용법 (0) 2022.03.16 [Android] ItemTouchHelper란 (0) 2022.03.11 [Android] Retrofit 쉼표로 구분된 값을 하나의 파라미터로 전송해야 할 때 (ID =1,2,3,4,5) (0) 2022.03.10