ViewModel
Lifecycle-aware component
ViewModel ์ด๋
์๋๋ก์ด๋ ํ๋ ์์ํฌ๋ Activity / Fragment ์ ๊ฐ์ UI ์ปจํธ๋กค๋ฌ์ ์๋ช
์ฃผ๊ธฐ๋ฅผ ๊ด๋ฆฌํ๋ค.
์์คํ
์์ UI ์ปจํธ๋กค๋ฌ๋ฅผ ์ ๊ฑฐํ๊ฑฐ๋ ๋ค์ ๋ง๋๋ ๊ฒฝ์ฐ, ์ปจํธ๋กค๋ฌ์ ์ ์ฅ๋ ๋ชจ๋ UI ๊ด๋ จ ๋ฐ์ดํฐ๊ฐ ์ญ์ ๋๋ค.
๋๋ฐ์ด์ค ํ๋ฉด ํ์ ํ๋ ๊ฒฝ์ฐ ์์ ๊ฐ์ด ์ปจํธ๋กค๋ฌ๋ฅผ ์ ๊ฑฐํ ํ ์๋ก ์์ฑ์ ํ๋ค. ๋จ์ํ ๋ฐ์ดํฐ๋ฅผ ๋ณต์ํ๊ธฐ ์ํด์๋ onSaveInstanceState()
๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ onCreate()
ํธ์ถ ์ ๋ฐ์ดํฐ๋ฅผ ๋ณต์ํ ์ ์๋ค.
ํ์ง๋ง ์ด ๋ฐฉ๋ฒ์ ์๋์ ๋ฐ์ดํฐ์๋ง ์ ํฉํ๋ค.
ViewModel
๊ฐ์ฒด๋ ์ด๋ฌํ ์ํฉ์์ ์๋์ผ๋ก ๋ณด๊ด๋์ด ์กํฐ๋นํฐ / ํ๋๊ทธ๋จผํธ ์ธ์คํด์ค์์ ์ฆ์ ์ฌ์ฉํ ์ ์๋ค.
๊ตฌํ
์์ ์ฝ๋์ ๊ฐ์ด ๋ทฐ๋ชจ๋ธ ํด๋์ค๋ Jetpack์์ ์ ๊ณตํ๋ ViewModel
์ ์์ํ์ฌ ๋ง๋ค ์ ์๊ณ ,
์กํฐ๋นํฐ๋ ํ๋๊ทธ๋จผํธ์์ ๊ฐ์ฒด์์ฑํ์ฌ ์ฌ์ฉํ ์์๋ค.
์๋ช
์ฃผ๊ธฐ
ViewModel ์ LifecycleOwners ์ ํน์ ์ธ์คํด์คํ๋ณด๋ค ์ค๋ ์ง์๋๋๋ก ์ค๊ณ๋์ด์๋ค. ๋ทฐ๋ชจ๋ธ ๊ฐ์ฒด์๋ View, Activity, Fragment ๊ฐ์ฒด๋ Context๋ฅผ ์ฐธ์กฐํ๋ฉด ์๋๋ค. (๋ทฐ๋ชจ๋ธ์ ๋ผ์ดํ์ฌ์ดํด์ UI ๋ผ์ดํ์ฌ์ดํด๋ณด๋ค ์ค๋ ์ง์๋๊ธฐ ๋๋ฌธ์ onCleared() ํจ์๊ฐ ํธ์ถ๋๊ธฐ ์ , UI ์ ๊ด๋ จ ๊ฐ์ฒด๋ Context ๋ฅผ ์ฐธ์กฐํ๊ฒ ๋๋ฉด GC์์ ์๊ฑฐํ์ง ๋ชปํด, ๋ฉ๋ชจ๋ฆฌ ๋์๊ฐ ๋ฐ์ํ๋ค)
ํ๋๊ทธ๋จผํธ๊ฐ์ ๋ฐ์ดํฐ ๊ณต์
ํ๋์ ์กํฐ๋นํฐ์์ ๋ ์ด์์ ํ๋๊ทธ๋จผํธ๋ฅผ ์ฌ์ฉํ ๋ ๊ฐ๊ฐ์ ๋ทฐ๋ชจ๋ธ์ ์์ฑํ๊ฒ ๋๋ฉด ๋ ์ด์์ ํ๋๊ทธ๋จผํธ์์์ ๊ฒฐํฉ์ด ์ฝ๊ฒ ์ฒ๋ฆฌ๋ ์ ์๋ ๋ถ๋ถ์ด๊ธฐ์ ๊ณต์ ๋๋ ๋ทฐ๋ชจ๋ธ์ ์ฌ์ฉํด์ผ ํ๋ค.
์ ์ฝ๋์ ๊ฐ์ด ์ฌ์ฉํ๋ฉด ์กํฐ๋นํฐ์ ์ฐ๊ฒฐ๋ ๋ทฐ๋ชจ๋ธ ๊ฐ์ฒด๋ฅผ ๊ณต์ฉ์ผ๋ก ํ๋๊ทธ๋จผํธ์์ ์ฌ์ฉํ ์ ์๋ค.
๋ฐฉ๋ฒ1 ์์์ฒ๋ผ activity-ktx ์ ๊ฐ์ด fragment-ktx ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ๋จํ๊ฒ ์ธ์คํด์คํ ํ ์ ์๊ณ ,
๋ฐฉ๋ฒ2 ๋ ๊ธฐ์กด ์กํฐ๋นํฐ์์ ๋ทฐ๋ชจ๋ธ์ ์ฐ๊ฒฐํ๊ฑฐ ๊ฐ์ด ์ฌ์ฉํ๋ฉด ๋๋ค. ์ฌ๊ธฐ์๋ ViewModelProvider์ Lifecycle์ this
๋ก ์ค์ ํ๊ฒ๋๋ฉด ์๊ธฐ ์์ (ํ๋๊ทธ๋จผํธ)์ ๋ผ์ดํ์ฌ์ดํด์ ๋ฐ๋ผ๊ฐ๊ธฐ ๋๋ฌธ์ ์ฐ๊ฒฐ๋ ์กํฐ๋นํฐ ๋ผ์ดํ์ฌ์ดํด์์ฐ๊ฒฐ์์ผ์ค์ผ ํ๋ค.
Last updated