LiveData
Lifecycle-aware component
LiveData ๋
LiveData๋ ๊ด์ฐฐ ๊ฐ๋ฅํ ๋ฐ์ดํฐ ํ๋ ํด๋์ค์ด๋ค. ๊ด์ฐฐ ๊ฐ๋ฅํ ์ผ๋ฐ ํด๋์ค์ ๋ฌ๋ฆฌ LiveData๋ ์๋ช ์ฃผ๊ธฐ๋ฅผ ์ธ์ํ๋ค. ์กํฐ๋นํฐ, ํ๋๊ทธ๋จผํธ, ์๋น์ค ๋ฑ ์ฑ ๊ตฌ์ฑ์์์ ์๋ช ์ฃผ๊ธฐ๋ฅผ ๊ณ ๋ คํ๋ค. ์๋ช ์ฃผ๊ธฐ ์ธ์์ ํตํด LiveData๋ ํ๋ ์๋ช ์ฃผ๊ธฐ ์ํ์ ์๋ ์ฑ ๊ตฌ์ฑ์์ ๊ด์ฐฐ์๋ง ์ ๋ฐ์ดํธ ํ๋ค.
Observer
ํด๋์ค๋ก ํํ๋๋ ๊ด์ฐฐ์์ ์๋ช
์ฃผ๊ธฐ๊ฐ STARTED
| RESUME
์ํ์ด๋ฉด LiveData๋ ๊ด์ฐฐ์๋ฅผ ํ์ฑ์ํ๋ก ๊ฐ์ฃผํ๋ค. LiveData๋ ๊ด์ฐฐ์์๊ฒ๋ง ์
๋ฐ์ดํธ ์ ๋ณด๋ฅผ ์๋ฆฐ๋ค.
LifecycleOwner
์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ๋ ๊ฐ์ฒด์ ํ์ด๋ง๋ ๊ด์ฐฐ์๋ฅผ ๋ฑ๋กํ ์ ์๋ค. ์ด ๊ด๊ณ๋ฅผ ์ฌ์ฉํ๋ฉด ๊ด์ฐฐ์์ ๋์๋๋ Lifecycle
๊ฐ์ฒด์ ์ํ๊ฐ DESTROYED
๋ก ๋ณ๊ฒฝ๋ ๋ ๊ด์ฐฐ์๋ฅผ ์ญ์ ํ ์ ์๋ค. LiveData ๊ฐ์ฒด๋ ์กํฐ๋นํฐ๋ ํ๋๊ทธ๋จผํธ์์ ํนํ ์ ์ฉํ๊ฒ ์ฌ์ฉ๊ฐ๋ฅํ๋ฉฐ, ๊ฐ์ฒด๋ฅผ ์์ ํ๊ฒ ๊ด์ฐฐํ ์ ์๊ณ ์๋ช
์ฃผ๊ธฐ๊ฐ ๋๋๋ ์ฆ์ ์์ ๊ฑฐ๋ถ๊ฐ ๋์ด๋ฉ๋ชจ๋ฆฌ ๋์๋ฅผ ๊ฑฑ์ ํ์ง ์์๋ ๋๋ค.
LiveData ์ฌ์ฉ์ ๋ํ ์ด์ ์ ๋ค์๊ณผ ๊ฐ๋ค.
UI ์ ๋ฐ์ดํฐ ์ํ์ ์ผ์น ๋ณด์ฅ - LiveData๋ ์ต์ ๋ฒ ํจํด์ ๋ฐ๋ฅด๋ฉฐ, ๊ธฐ๋ณธ ๋ฐ์ดํฐ๊ฐ ๋ณ๊ฒฝ๋ ๋ Observer ๊ฐ์ฒด์ ์๋ฆฐ๋ค. Observer๊ฐ์ฒด์ UI๋ฅผ ์ ๋ฐ์ดํธ ํ ์ ์์ผ๋ฉฐ ์ด๋ ๊ฒ ํ๋ฉด ์ฑ ๋ฐ์ดํฐ๊ฐ ๋ณ๊ฒฝ๋ ๋ ๋ง๋ค ๊ด์ฐฐ์๊ฐ ๋์ UI๋ฅผ ์ ๋ฐ์ดํธ ํ๋ฏ๋ก ์ถ๊ฐ ์์ ์ ์ฒ๋ฆฌํ ํ์๊ฐ ์๋ค.
๋ฉ๋ชจ๋ฆฌ ๋์ ์์ ๊ด์ฐฐ์๋ Lifecycle ๊ฐ์ฒด์ ๊ฒฐํฉ๋์ด ์์ผ๋ฉฐ ์ฐ๊ฒฐ๋ ์๋ช ์ฃผ๊ธฐ๊ฐ ๋๋๋ฉด ์๋์ผ๋ก ์ญ์ ๋๋ค
์ค์ง๋ ํ๋์ผ๋ก ์ธํ ๋น์ ์ ์ข ๋ฃ ์์ ์์์ ์ค๋ช ํ๋ฏ์ด LiveData ๋ STARTED | RESUME ์ํ์ผ ๋ ํ์ฑ์ํ๋ก ๊ฐ์ฃผํ๊ธฐ ๋๋ฌธ์, ์กํฐ๋นํฐ๊ฐ ๋ฐฑ์คํ ์ ์์ ๋๋ ๊ด์ฐฐ์๊ฐ ์๋ช ์ฃผ๊ธฐ๊ฐ ๋นํ์ฑํ ์ํ์ด๋ฉด ์ด๋ ํ LiveData ๋ฅผ ์์ ํ์ง ์๊ธฐ ๋๋ฌธ์ ์ค๋ฅ๊ฐ ๋ฐ์ํ์ง ์๋๋ค.
์๋ช ์ฃผ๊ธฐ๋ฅผ ๋ ์ด์ ์๋์ผ๋ก ์ฒ๋ฆฌํ์ง ์์ UI ๊ตฌ์ฑ์์๋ ๊ด๋ จ ๋ฐ์ดํฐ๋ฅผ ๊ด์ฐฐ๋ง ํ ๋ฟ ๊ด์ฐฐ์ ์ค์งํ๊ฑฐ๋ ๋ค์ ์์ํ์ง ์๋๋ค. LiveData๋ ๊ด์ฐฐํ๋ ๋์ ๊ด๋ จ ์๋ช ์ฃผ๊ธฐ ์ํ์ ๋ณ๊ฒฝ์ ์ธ์ํ๋ฏ๋ก ์๋์ผ๋ก ๊ด๋ฆฌ๊ฐ ๋๋ค.
์ต์ ๋ฐ์ดํฐ ์ ์ง ๋ฐฑ๊ทธ๋ผ์ด๋์์ (onPause | onStop ) ํฌ๊ทธ๋ผ์ด๋๋ก ์ ํ๋์์ ๋ LiveData๋ ๋ค์ ํ์ฑํ ์ํ๊ฐ ๋๋ฉด์ ๊ด์ฐฐ์๋ ์ต์ ๋ฐ์ดํฐ๋ฅผ ์์ ๋ฐ๊ฒ ๋๋ค.
๋ฆฌ์์ค ๊ณต์ ์ฑ์์ ์์คํ ์๋น์ค๋ฅผ ๊ณต์ ํ ์ ์๋๋ก ์ฑ๊ธํค ํจํด์ ์ฌ์ฉํ๋ LiveData ๊ฐ์ฒด๋ฅผ ํ์ฅํ์ฌ ์์คํ ์๋น์ค์ ํ ๋ฒ ์ฐ๊ฒฐํ๋ฉด ๋ฆฌ์์ค๊ฐ ํ์ํ ๋ชจ๋ ๊ด์ฐฐ์๊ฐ LiveData ๋ฅผ ๋ณผ ์ ์๋ค.
LiveData ์ฌ์ฉ
LiveData๋ ์ผ๋ฐ์ ์ผ๋ก ViewModel ํด๋์ค ์ฌ์ฉ๋๋ค. ์๋๋ก์ด๋ MVVM ๋์์ธ ํจํด์์ ์ฌ์ฉ๋๋ค.
ViewModel
์ LiveData ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ค.
2. Observer ๊ฐ์ฒด๋ฅผ ๋ง๋ ๋ค. onChange()
๋ฉ์๋๋ LiveData ๊ฐ์ฒด๊ฐ ๋ณด์ ํ ๋ฐ์ดํฐ๊ฐ ๋ณ๊ฒฝ๋์์ ๋, ํธ์ถ๋๋ค.
๊ด์ฐฐ์ ๋ฑ๋ก (observe ๋ฉ์๋) ์ ์กํฐ๋นํฐ ๊ธฐ์ค onCreate()
๋ฉ์๋์์ ํด์ฃผ๋ ๊ฒ์ด ์ข๋ค.
์ฌ์ฉ์ ํ๋์ ๋ฐ๋ผ onResume()
์ ์ฌ๋ฌ๋ฒ ํธ์ถ๋ ์ ์๋ ๋ฉ์๋์ด๋ฏ๋ก ์ค๋ณต ํธ์ถ์ ํ์ง ์๋๋ก ํด์ผํ๋ค.
๋ํ STARTED
์ํ๊ฐ ๋์์ ๋, LiveData๋ ์ฆ์ ์ต์ ๋ฐ์ดํฐ๋ฅผ ์์ ํ๋ค. ์ด๋ ์ด๋ฏธ ๊ด์ฐฐ์๊ฐ ๋ฑ๋ก๋์ด์์ ๋๋ง ๋ฐ์ํ๋ฏ๋ก ์ด์ ์ ์ค์ ์ ํด๋์์ผ ํ๋ค.
LiveData ๊ฐ์ฒด ์
๋ฐ์ดํธ
์๋ ์์ ๋ ์กํฐ๋นํฐ ๋ด ๋ฒํผ ํด๋ฆญ ์ ๋ทฐ๋ชจ๋ธ์ ์๋ MutableLiveData ๊ฐ์ฒด์ ๊ฐ์ ์์ ํ๊ณ , ํด๋น ๋ฐ์ดํฐ๋ฅผ ๊ด์ฐฐํ๋ ์กํฐ๋นํฐ์์ UI๋ฅผ ๋ณ๊ฒฝํ๋ค.
setValue()
: ํด๋น ๋ฉ์๋๋ ๋ฉ์ธ์ค๋ ๋์์ ํธ์ถ๋๋ค.
postValue()
: ํด๋น ๋ฉ์๋๋ ๋ฐฑ๊ทธ๋ผ์ด๋ ์ค๋ ๋์์ ์์
์ ์ฒ๋ฆฌํ๊ณ ๋ฉ์ธ์ค๋ ๋์ ๊ฐ์ post ํ๋ ๋ฐฉ์์ด๋ค.
// todo ...
Last updated