ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Android] Preference, Shared Preference?
    Android 2021. 11. 19. 14:41
    ๋ฐ˜์‘ํ˜•

    Shared Preference?

     ์•ˆ๋“œ๋กœ์ด๋“œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—๋Š” ๋Œ€๋ถ€๋ถ„ ์„ค์ •์„ ํ•  ์ˆ˜ ์žˆ๋Š” ํ™”๋ฉด์ด ๋ณ„๋„๋กœ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค. ๋กœ๊ทธ์ธ ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•œ๋‹ค๋˜๊ฐ€, SMS ์ˆ˜์‹  ๋™์˜ ์—ฌ๋ถ€์™€ ๊ฐ™์€ ์„ค์ •์„ ํ•˜๊ฒŒ ๋˜๋ฉด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋‹ค์‹œ ์‹คํ–‰ํ•˜๋”๋ผ๋„ ์œ ์ง€๋ฉ๋‹ˆ๋‹ค. ์ด์ฒ˜๋Ÿผ ์•ˆ๋“œ๋กœ์ด๋“œ์—์„œ๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์‹œ์Šคํ…œ ์ „์ฒด์—์„œ ์œ ์ง€๋˜๋„๋ก ์ €์žฅํ•  ์ˆ˜ ์ž๋ฃŒ๊ตฌ์กฐ๊ฐ€ Shared Preference ์ž…๋‹ˆ๋‹ค. Shared Preference๋Š” ํ‚ค์™€ ๊ฐ’์„ ๋‹ด์„ ์ˆ˜ ์žˆ๋Š” ์ž๋ฃŒ๊ตฌ์กฐ๋กœ Editor๋ฅผ ํ†ตํ•ด xml ํŒŒ์ผ์— ๊ธฐ๋กํ•˜์—ฌ ์–ธ์ œ๋“  ์ฝ๊ณ  ์“ธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 

     

    Activity.getPreference()

    Shared Preference๋ฅผ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๋Š” API ์ค‘ ํ•˜๋‚˜๋กœ Activity ํด๋ž˜์Šค ๋‚ด์— ์กด์žฌํ•˜๊ณ  Activity ๋ณ„๋กœ ๋‹ค๋ฅธ SharedPreference ๊ฐ์ฒด๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

     

    Context.getSharedPreference()

    Context ํด๋ž˜์Šค ๋‚ด์— ์กด์žฌํ•˜๋Š” API๋กœ ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ Preference์˜ ์ด๋ฆ„์„ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ํ‚ค-๊ฐ’ ์Œ์œผ๋กœ ์ด๋ฃจ์–ด์ง„ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ด์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ํ•ด๋‹น ์ด๋ฆ„์„ ๊ฐ€์ง„ xml์„ ์ƒ์„ฑํ•˜์—ฌ Editor๋ฅผ ์ด์šฉํ•˜์—ฌ ์ฝ๊ณ  ์“ฐ๊ธฐ๋ฅผ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. Activity.getPreference๋Š” ์•กํ‹ฐ๋น„ํ‹ฐ ๋ณ„๋กœ Preference๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ๋ชจ๋“  Activity์—์„œ ๊ณตํ†ต์ ์œผ๋กœ๋Š” ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. Context.getShraedPreference๋Š” ๋ง ๊ทธ๋Œ€๋กœ ์•ฑ ๋‚ด์˜ ๋ชจ๋“  ์ปจํ…์ŠคํŠธ์—์„œ ๊ณต์œ ํ•˜๋Š” Preference๋กœ ๊ธฐ๋ณธ ํ™˜๊ฒฝ์„ค์ • ํ•  ๋•Œ ์ฃผ๋กœ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

     

    PreferenceManager.getDefaultSharedPreference()

    PreferenceManager๋ฅผ ํ†ตํ•ด์„œ ์•ฑ์˜ ๊ธฐ๋ณธ ํ™˜๊ฒฝ์„ค์ • ๊ฐ์ฒด๋ฅผ ๋ฐ˜ํ™˜ํ•ด์˜ค๋Š” API์˜€์ง€๋งŒ, ํ˜„์žฌ๋Š” deprecated๋œ ์ƒํƒœ์ž…๋‹ˆ๋‹ค.

     

     

     

    SharedPreference.Editor

     SharedPreference๋Š” ํ‚ค์™€ ๊ฐ’์„ ๋‹ด๋Š” ์ž๋ฃŒ๊ตฌ์กฐ๋ผ๊ณ  ํ–ˆ๋Š”๋ฐ ์‚ฌ์‹ค์ƒ ํŒŒ์ผ์„ ๊ธฐ๋กํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ํ•ด๋‹น ํŒŒ์ผ์„ ์ฝ๊ณ  ์“ฐ๊ธฐ ์œ„ํ•ด์„œ๋Š” Editor ๊ฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. SharedPreference์˜ edit() ๋ฉ”์†Œ๋“œ๋ฅผ ์ด์šฉํ•˜๋ฉด ์ƒˆ๋กœ์šด Editor ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•ด ์ฃผ๊ฒŒ ๋˜๊ณ  String, Float, Int, Long ๋“ฑ ์—ฌ๋Ÿฌ ํƒ€์ž…์˜ ๋ณ€์ˆ˜๋ฅผ ๋‹ด์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 

     

     Editor๋ฅผ ์ด์šฉํ•˜์—ฌ xml ํŒŒ์ผ์— ์“ฐ๊ธฐ ์œ„ํ•ด์„œ๋Š” commit, apply ๋ฉ”์†Œ๋“œ๋ฅผ ์ด์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‘ ๋ฉ”์†Œ๋“œ ๊ฐ„์˜ ์ฐจ์ด๊ฐ€ ๋ช…๋ฐฑํžˆ ์กด์žฌํ•˜๊ณ  ๊ตฌ๋ณ„ํ•˜์—ฌ ์‚ฌ์šฉํ•ด์•ผ ์›ํ•˜๋Š” ๊ฒฐ๊ณผ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    class MainActivity : AppCompatActivity() {
    
        val context_preference by lazy {getSharedPreferences("ows", Context.MODE_PRIVATE)}
    
        override fun onCreate(savedInstanceState: Bundle?) {
            super.onCreate(savedInstanceState)
            setContentView(R.layout.activity_main)
    
            context_preference.edit().putString("hello","world").apply()
        }
    }

     

    โ€ป  commit

     commit ํ•จ์ˆ˜๋Š” ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅ๋œ SharedPreference ๊ฐ์ฒด์— ๋ฐ์ดํ„ฐ๋ฅผ ์ฆ‰์‹œ ๋ณ€๊ฒฝํ•˜๊ณ  ํŒŒ์ผ๋„ ๋™๊ธฐ์ ์œผ๋กœ ๋ณ€๊ฒฝํ•˜๋Š” API ์ž…๋‹ˆ๋‹ค. ๋™๊ธฐ์ ์œผ๋กœ ํŒŒ์ผ์„ ์“ฐ๊ธฐ ๋•Œ๋ฌธ์— ๋ฉ”์ธ ์Šค๋ ˆ๋“œ์—์„œ commit์„ ์ˆ˜ํ–‰ํ•˜๊ฒŒ ๋˜๋ฉด UI ์—…๋ฐ์ดํŠธ๋ฅผ ์ฐจ๋‹จํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋ฉ”์ธ ์Šค๋ ˆ๋“œ์—์„œ ํ˜ธ์ถœํ•˜๋Š” ๊ฒƒ์„ ํ”ผํ•˜๊ณ  ์ƒˆ๋กœ์šด ์Šค๋ ˆ๋“œ๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ํ˜ธ์ถœํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. 

     

    โ€ป  apply

     apply ํ•จ์ˆ˜๋Š” ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅ๋œ SharedPreference ๊ฐ์ฒด์— ๋ฐ์ดํ„ฐ๋ฅผ ์ฆ‰์‹œ ๋ณ€๊ฒฝํ•˜์ง€๋งŒ ํŒŒ์ผ์€ ๋น„๋™๊ธฐ์ ์œผ๋กœ ๋ณ€๊ฒฝํ•˜๋Š” API ์ž…๋‹ˆ๋‹ค. ๋น„๋™๊ธฐ์ ์œผ๋กœ ํ˜ธ์ถœํ•˜์—ฌ commit์— ๋น„ํ•ด ์‹คํ–‰์†๋„ ์ธก๋ฉด์—์„œ ํ›จ์”ฌ ๋น ๋ฆ…๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ commit์€ ์ž‘์—…์ด ์™„๋ฃŒ๋˜๋ฉด boolean ์„ ๋ฆฌํ„ดํ•˜์—ฌ ์™„๋ฃŒ ์—ฌ๋ถ€๋ฅผ ์•Œ ์ˆ˜ ์žˆ์ง€๋งŒ, apply๋Š” ๋ฆฌํ„ด ๊ฐ’์ด ์—†๊ธฐ ๋•Œ๋ฌธ์— ํ™•์ธํ•  ์ˆ˜ ์—†๋‹ค๋Š” ๋‹จ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

     

      Device File Explorer ํƒ์ƒ‰์ฐฝ์—์„œ ํŒจํ‚ค์ง€ ํด๋”์˜ shared_prefs์— ๋“ค์–ด๊ฐ€๋ฉด ๋งŒ๋“ค์—ˆ๋˜ xml์˜ ์ด๋ฆ„์œผ๋กœ ๋ฐ์ดํ„ฐ๋“ค์ด ์“ฐ์ด๋Š” ๋ชจ์Šต์„ ํ™•์ธํ•˜์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ SharedPreference๋Š” ์ž‘์€ ๋ฐ์ดํ„ฐ๋ฅผ ์•ฑ ๋‚ด์— ๊ธฐ๋กํ•˜์—ฌ ์œ ์ง€ํ•˜๋ฉฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ธฐ๋งŒ ๋ณด์•ˆ์„ฑ์ด ์ข‹์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์ค‘์š”ํ•œ ์ •๋ณด๋Š” ์—ฌ๊ธฐ์— ๊ธฐ๋กํ•˜๋Š” ๊ฒƒ์€ ์ข‹์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

     

     

    ์ฐธ๊ณ 

     

    SharedPreferences.Editor  |  Android Developers

     

    developer.android.com

     

    ํ‚ค-๊ฐ’ ๋ฐ์ดํ„ฐ ์ €์žฅ  |  Android ๊ฐœ๋ฐœ์ž  |  Android Developers

    ํ‚ค-๊ฐ’ ๋ฐ์ดํ„ฐ ์ €์žฅ ์ €์žฅํ•˜๋ ค๋Š” ํ‚ค-๊ฐ’ ์ปฌ๋ ‰์…˜์ด ๋น„๊ต์  ์ž‘์€ ๊ฒฝ์šฐ SharedPreferences API๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. SharedPreferences ๊ฐ์ฒด๋Š” ํ‚ค-๊ฐ’ ์Œ์ด ํฌํ•จ๋œ ํŒŒ์ผ์„ ๊ฐ€๋ฆฌํ‚ค๋ฉฐ ํ‚ค-๊ฐ’ ์Œ์„ ์ฝ๊ณ  ์“ธ ์ˆ˜ ์žˆ๋Š” ๊ฐ„๋‹จ

    developer.android.com

    • ์•ˆ๋“œ๋กœ์ด๋“œ ์•ฑ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ฐ€์ด๋“œ p580 ~ p584
    ๋ฐ˜์‘ํ˜•
Designed by Tistory.