๐Ÿ”ฅTIL๐Ÿ”ฅ์ŠคํŒŒ๋ฅดํƒ€ | SharedPreferences

hyihyiยท2024๋…„ 1์›” 23์ผ
0

TIL

๋ชฉ๋ก ๋ณด๊ธฐ
38/70
post-thumbnail

๐Ÿ“– ์˜๊ตฌ์  ๋ฐ์ดํ„ฐ ์ €์žฅ ๋ฐฉ๋ฒ• 3๊ฐ€์ง€

1. SharedPreferences

2. DB

3. ํŒŒ์ผ ํ˜•ํƒœ

๐Ÿค” SharedPreferences์„ ์“ฐ๋Š” ์ด์œ 

  • ํ”„๋กœ๊ทธ๋žจ์˜ ์„ค์ • ์ •๋ณด๋ฅผ ์˜๊ตฌ์ ์œผ๋กœ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ

๐Ÿ“– SharedPreferences๋ฅผ ์“ฐ๋Š” ๋ฐฉ๋ฒ•

  • XML ํฌ๋งท์˜ ํ…์ŠคํŠธ ํŒŒ์ผ์— ํ‚ค-๊ฐ’ ์„ธํŠธ๋กœ ์ •๋ณด ์ €์žฅ
    ex) alarm-true
    alarm ๊ฐ’์ด ํ•„์š”ํ•  ๋•Œ true์ธ์ง€ false์ธ์ง€ ๋ฐ›์•„์˜ค๋ฉด ๋œ๋‹ค.
    ๋‹ค๋ฅธ ์•ฑ์—์„œ๋Š” ์•ˆ๋˜๊ณ  ๋‚ด๊ฐ€ ๋งŒ๋“  ์•ฑ์—์„œ๋งŒ ์ฝ์„ ์ˆ˜ ์žˆ๋‹ค.

๐Ÿ“ getSharedPreferences(key, value)

์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅ
preference ์ด๋ฆ„์œผ๋กœ ๊ฐ€์ ธ์˜ค๋ฉด ๋œ๋‹ค
ex)R.string.preference_file_key

๐Ÿ“ getPreferences

1๊ฐœ๋งŒ ์ €์žฅ, ์ž˜ ์•ˆ ์”€

์ €์žฅ๋œ ๊ฐ’์„ ๋ถˆ๋Ÿฌ์˜ฌ ๋•Œ๋Š” defaultValue ๊ฐ’์„ ์ง€์ •ํ•ด์ค˜์•ผ ํ•œ๋‹ค.

โžกset์„ ํ•˜์ง€ ์•Š๊ณ  get์„ ํ–ˆ์„ ๋•Œ๋ฅผ ๋Œ€๋น„ํ•ด์„œ

๐Ÿ“ getSharedPreferences ์‚ฌ์šฉํ•˜๊ธฐ(Activity)

๋ฐ์ดํ„ฐ ์ €์žฅํ•˜๊ธฐ

  1. ๊ณต์œ  ํ™˜๊ฒฝ์„ค์ • ํŒŒ์ผ์— ์“ฐ๊ธฐ ์œ„ํ•ด SharedPreferences์—์„œ edit()์„ ํ˜ธ์ถœํ•˜์—ฌ SharedPreferences.Editor ๋งŒ๋“ค๊ธฐ
  2. putInt() ๋ฐ putString()๊ณผ ๊ฐ™์€ ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์“ฐ๋ ค๊ณ  ํ•˜๋Š” ํ‚ค์™€ ๊ฐ’์„ ์ „๋‹ฌ
  3. apply() ๋˜๋Š” commit()์„ ํ˜ธ์ถœํ•˜์—ฌ ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ ์ €์žฅ
private fun saveData() {
    val pref = getSharedPreferences("pref", 0)
    val edit = pref.edit()
    edit.putString("name", binding.etText.text.toString())
    edit.apply()
}

apply()๋Š” ๋ฉ”๋ชจ๋ฆฌ ๋‚ด SharedPreferences ๊ฐ์ฒด๋ฅผ ์ฆ‰์‹œ ๋ณ€๊ฒฝํ•˜์ง€๋งŒ ์—…๋ฐ์ดํŠธ๋ฅผ ๋””์Šคํฌ์— ๋น„๋™๊ธฐ์ ์œผ๋กœ ์“ด๋‹ค. ๋˜๋Š” commit()์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ๋””์Šคํฌ์— ๋™๊ธฐ์ ์œผ๋กœ ์“ธ ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ commit()์€ ๋™๊ธฐ์ ์ด๋ฏ€๋กœ UI ๋ Œ๋”๋ง์ด ์ผ์‹œ์ค‘์ง€๋  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ธฐ๋ณธ ์Šค๋ ˆ๋“œ์—์„œ ํ˜ธ์ถœํ•˜๋Š” ๊ฒƒ์„ ํ”ผํ•ด์•ผ ํ•œ๋‹ค.

๋ฐ์ดํ„ฐ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ

์ €์žฅํ•  ๋•Œ ์ผ๋˜ ํ‚ค๊ฐ’์œผ๋กœ ๋ถˆ๋Ÿฌ์˜ค๋ฉด ๋œ๋‹ค.

private fun loadData() {
    val pref = getSharedPreferences("pref", 0)
    binding.etText.setText(pref.getString("name",""))
}

๐Ÿ“ getSharedPreferences ์‚ฌ์šฉํ•˜๊ธฐ(Fragment)

๐Ÿ˜ฏFragment์—์„œ SharedPreferences๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด Activity์˜ ์ปจํ…์ŠคํŠธ๋ฅผ ํ†ตํ•ด ์ ‘๊ทผํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. getSharedPreferences ๋ฉ”์„œ๋“œ๋Š” Context ํด๋ž˜์Šค์˜ ๋ฉ”์„œ๋“œ์ด๋ฏ€๋กœ, Fragment ๋‚ด์—์„œ ์ด๋ฅผ ์ง์ ‘ ํ˜ธ์ถœํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋Œ€์‹  getActivity() ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Fragment๊ฐ€ ํ˜„์žฌ ์—ฐ๊ฒฐ๋œ Activity์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ์–ป๊ณ , ์ด๋ฅผ ํ†ตํ•ด getSharedPreferences๋ฅผ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฐ์ดํ„ฐ ์ €์žฅํ•˜๊ธฐ

private fun saveData() {
	// Activity์˜ ์ปจํ…์ŠคํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ SharedPreferences ์ธ์Šคํ„ด์Šค๋ฅผ ์–ป์Šต๋‹ˆ๋‹ค.
	val pref = activity?.getSharedPreferences("pref", Context.MODE_PRIVATE)
	val edit = pref?.edit()
	// SharedPreferences๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.
	edit?.putString("name", binding.etText.text.toString())
	// ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค.
	edit?.apply()
}

๋ฐ์ดํ„ฐ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ

private fun loadData() {
	// Activity์˜ ์ปจํ…์ŠคํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ SharedPreferences ์ธ์Šคํ„ด์Šค๋ฅผ ์–ป์Šต๋‹ˆ๋‹ค.
	val pref = activity?.getSharedPreferences("pref", Context.MODE_PRIVATE)
	// SharedPreferences์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ถˆ๋Ÿฌ์˜ต๋‹ˆ๋‹ค.
	val name = pref?.getString("name", "")
	// ๋ถˆ๋Ÿฌ์˜จ ๋ฐ์ดํ„ฐ๋ฅผ UI์— ๋ฐ˜์˜ํ•ฉ๋‹ˆ๋‹ค.
	binding.etText.setText(name)
}
profile
๋‚ด๊ฐ€ ์ดํ•ดํ•˜๊ธฐ ์‰ฝ๊ฒŒ ์“ฐ๋Š” ๋ธ”๋กœ๊ทธ

0๊ฐœ์˜ ๋Œ“๊ธ€