앱들을 보다보면 내가 검색했던 내용이 저장되있는 걸 볼 수 있다. 오늘은 그 부분의 내용을 공부하고 정리하고자한다.
먼저 Preference란 무엇일까?
요약하자면 xml 텍스트 파일에 키-값을 세트로 정보를 영구적으로 저장하는 용도라고 보면된다.
Preference를 사용하려면 다음과 같은 형식으로 사용하면 된다.
val 변수명 = activity?.getSharedPreferences(name, mode) or activity?. getPreferences(Context.MODE_PRIVATE)
이런식으로 액티비티뒤에 getSharedPreferences(name, mode)을 써서 사용해주면 되지만 위 코드 처엄 getSharedPreferences 혹은 getPreferences 둘중 하나를 코드 상황에 맡게 쓰면 되는데 그 이유는 Shared Preference파일을 여러개를 쓰냐, 혹은 한개의 파일로 쓰냐의 차이이다.
자세한 사항은 다음과 같다.
코드로 보자면 다음과 같다
val 변수명 = activity?.getSharedPreferences(
getString(R.string.preference_file_key), Context.MODE_PRIVATE)
덧붙혀서 사용 가능한 데이터 타입도 있다.

위 사진을 참고해서 본인의 사용에 맞게 데이터 타입을 고르면 된다.
코드로 보면과 같다.
val sharedPref = activity?.getPreferences(Context.MODE_PRIVATE)
여기까지가
SharedPreferences의 기본 구성밑 사용법이다.
간단한 예제를 하나 만들어 좀더 사용법을 익혀보도록하자.
우선 xml부터 작성하여 다음과 같은 화면을 꾸민다.

그리도 코드는 다음과 같이 작성해준다.

코드를 살펴보면
btnSave라는 이름의 버튼 id를 가진 버튼을 눌렀을때 private fun saveData()가 실행되고 val pref = getSharedPreferences("pref",0)에 pref의 이름의 키값과 모델을 0을 넣어준뒤 val edit = pref.edit()를 작성하여 edit라는 변수에 넣어준다.
그리고
edit.putString("name", binding.etHello.text.toString())
edit.apply() 를 입력하여 Edit 텍스트에 글씨를 적고 버튼을 누르게되면 텍스트가 저장이 되고서, 토스트 메시지로 Data Saved를 띄워준다.
그리고 Edit 텍스트에 저장된 텍스트를 불러오기 위해 private fun loadData() 작성, val pref = getSharedPreferences("pref",0) 똑같이 작성한뒤 binding.etHello.setText(pref.getString("name",""))로 저장된 텍스트를 불러와 Edit 텍스트에 띄워준다.
문제 없이 작성되었다면 Edit 텍스트에 텍스트를 적고 버튼을 눌러 저장한뒤 어플을 껏다 켜보면 끄기전에 적어놨던 텍스트가 다시 쓰는걸 확인해 볼 수있다.
수박님 SharedPreference 내용 잘 읽고 갑니다 :)