[TIL] Shared Preferences

박봉팔·2024년 1월 23일
0

안드로이드 앱에서의 데이터는 기본적으로 휘발성을 지니고 있기때문에 따로 저장을 하지 않을 경우
앱을 종료하고 다시 실행하면 입력했던 모든 데이터가 사라지게 된다

데이터를 저장하는 방법은 크게 3가지로 나뉘어 진다.

  1. Shared Preferences
  2. Database
  3. 파일로 저장

Preference

preference는 프로그램의 설정정보를 영구적으로 저장하기 위해 사용되는 요소이다.
(사용자의 옵션 선택사항이나, 프로그램 구성정보를 저장한다.)

preference는 XML포멧의 텍스트 파일로 Key-Value의 세트로 저장된다.


Shared Preferences

Preference의 데이터를 관리하는 클래스로 응용프로그램의 고유한 정보이다.
(따라서 외부에서는 읽을 수 없다.)

프로그램 내무의 액티비티간에 공유되며, 따라서 한쪽 액티비티에서 수정시 다른 액티비티에서도 값을 읽을 수 있다.


사용방법

Preferences는 두가지 방법으로 저장이 가능하다.

1. getPreferences

한개의 Shared Preference파일을 사용하는 경우 사용한다. Activity클래스에 정의된 메소드이기 때문에 Activity인스턴스를 통해 접근이 가능하다.

Activity전용이기 때문에 같은 패키지여도 다른 Activity에서 읽는게 불가능하다.

한개의 Shared Preference파일만 사용하는 경우는 잘 없기떄문에 많이 사용되지 않는다.

val sharedPref = activity?.getPreferences(Context.MODE_PRIVATE)

2. getSharedPreferences (name, mode)

여러개의 SharedPreferences 파일들을 사용할때 사용하는 메서드이다.

namePreference데이터를 저장할 XML파일을 입력하고 mode에는 파일 공유모드를 입력한다.

파일 공유모드로는 MODE_PRIVATE, MODE_WORLD_READABLE, MODE_WORLD_WRITEABLE 세가지가 있었지만 보안상의 이유로 API level 17부터는 MODE_PRIVATE만 사용이 가능하다.

Boolean, Float, Int, Long, String, StringSet 데이터만 사용 가능

// getSharedPreferences로 불러오면서 키값과 모드 (0은 MODE_PRIVATE) 입력
val sharedPref = getSharedPreferences("키 값", 0)

// putString으로 저장될 키와 값을 입력
sharedPref.edit().putString("name", binding.etMain.text.toString())
sharedPref.edit().apply

3. 값 불러오기

지정했던 키값으로 Shared Preferences를 불러와 내부에 저장된 Preferences의 키캆으로 값을 불러온다.

값을 불러올때는 비어있을 경우에 들어갈 디폴트값이 반드시 함께 입력되어야한다.

// "pref"로 저장된 SharedPreferences를 불러옴
var sharedPref = getSharedPreferences("pref", 0)

// 해당 SharedPreferences에 name으로 저장된 값을 불러옴 뒤쪽에는 디폴트 값이 들어간다.
binding.etMain.setText(sharedPref.getString("name", ""))

오늘은 어땠나요?

심화주차.... 산...넘어...산이네...?

profile
개발 첫걸음! 가보자구!

0개의 댓글