-
[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๋ ์์ ๋ฐ์ดํฐ๋ฅผ ์ฑ ๋ด์ ๊ธฐ๋กํ์ฌ ์ ์งํ๋ฉฐ ์ฌ์ฉํ ์ ์๊ธฐ๋ง ๋ณด์์ฑ์ด ์ข์ง ์๊ธฐ ๋๋ฌธ์ ์ค์ํ ์ ๋ณด๋ ์ฌ๊ธฐ์ ๊ธฐ๋กํ๋ ๊ฒ์ ์ข์ง ์์ต๋๋ค.
์ฐธ๊ณ
- ์๋๋ก์ด๋ ์ฑ ํ๋ก๊ทธ๋๋ฐ ๊ฐ์ด๋ p580 ~ p584
๋ฐ์ํ'Android' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Android] SQLite, SQLiteOpenHelper, Local DB ์ดํด (0) 2021.11.30 [Android] Context, ContextWrapper, ContextImpl ์ดํด (0) 2021.11.21 [Android] Thread, Handler, Looper, Message Queue ๋ค๋ฃจ๊ธฐ (0) 2021.11.11 [Android] Activity๋? Activity LifeCycle ์๋ฒฝ ์ดํด (0) 2021.11.03 [Android] Drawble layer-list (0) 2021.08.15