[Android / Kotlin] SharedPreferences

Subeen·2024년 1월 23일
0

Android

목록 보기
46/71

Preferences

  • 프로그램의 설정 정보 (사용자의 옵션 선택 사항이나 프로그램의 구성 정보)를 영구적으로 저장하는 용도로 사용
  • XML 포맷의 텍스트 파일에 키-값 세트로 정보를 저장
  • SharedPreferences 클래스
    • Preferences의 데이터(키-값)를 관리하는 클래스
    • 응용 프로그램 내의 액티비티 간에 공유하며, 한쪽 액티비티에서 수정 시 다른 액티비티에서도 수정 된 값을 읽을 수 있다.
    • 응용 프로그램의 고유한 정보이므로 외부에서는 읽을 수 없다.

사용 방법

  • getSharedPreferences (name, mode)
    • 여러 개의 Shared Preference 파일들을 사용하는 경우
    • name: Preferences 데이터를 저장할 XML 파일의 이름이다.
    • mode : 파일의 공유 모드
      • MODE_PRIVATE : 생성된 XML 파일은 호출한 애플리케이션 내에서만 읽기 쓰기가 가능
      • MODE_WORD_DEADABLE, MODE_WORD_WRITEABLE은 보안상 이유로 API level 17에서 deprecated됨
val sharedPref = activity?.getSharedPreferences(
		getString(R.string.preference_file_key), Context.MODE_PRIVATE)

예제

class MainActivity : AppCompatActivity() {

    private val binding: ActivityMainBinding by lazy {
        ActivityMainBinding.inflate(layoutInflater)
    }

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(binding.root)

        initView()
    }

    private fun initView() {
        binding.btSave.setOnClickListener {
            saveData()
            Toast.makeText(this@MainActivity, "Data Saved.", Toast.LENGTH_SHORT).show()
        }

        loadData()
    }

    private fun saveData() {
        val pref = getSharedPreferences("pref", 0)
        val edit = pref.edit() // 수정 모드
        // 1번 째 인자는 키, 2번 째 인자는 실제 담아둘 값
        edit.putString("name", binding.etHello.text.toString())
        edit.apply() // 저장 완료
    }

    private fun loadData() {
        val pref = getSharedPreferences("pref", 0)
        // 1번 째 인자는 키, 2 번째 인자는 데이터가 존재하지 않을 경우의 값
        binding.etHello.setText(pref.getString("name", ""))
    }
}

결과 화면

profile
개발 공부 기록 🌱

0개의 댓글