์๋๋ก์ด๋ ์ฑ์ UI ๋ ์ด์ด๋ ์ฌ์ฉ์์์ ์ํธ์์ฉ์ ์ฒ๋ฆฌํ๋ฉฐ, ํ๋ฉด์ ๋ฐ์ดํฐ๋ฅผ ํ์ํ๋ ํต์ฌ์ ์ธ ์ญํ ์ ํ๋ค.
์ ์ง๋ณด์์ฑ๊ณผ ํ์ฅ์ฑ์ ๊ณ ๋ คํ UI๋ฅผ ๊ตฌ์ถํ๋ ค๋ฉด ๊ด์ฌ์ฌ์ ๋ถ๋ฆฌ, ๋จ๋ฐฉํฅ ๋ฐ์ดํฐ ํ๋ฆ(UDF), ์ํ ๊ด๋ฆฌ ๋ฑ์ ์์น์ ๋ฐ๋ฅด๋ ๊ฒ์ด ์ค์ํ๋ค.
1. UI ๋ ์ด์ด์ ํต์ฌ ๊ตฌ์ฑ ์์
UI ๋ ์ด์ด๋ ํฌ๊ฒ ๋ ๊ฐ์ง ์์๋ก ๊ตฌ์ฑ๋๋ค.

- UI ์์: View ๋๋ Jetpack Compose๋ฅผ ์ฌ์ฉํด UI๋ฅผ ๊ตฌ์ฑํ๋ค.
- ์ํ ํ๋(State Holder): UI ์ํ๋ฅผ ๊ด๋ฆฌํ๋ฉฐ, UI ์์์ ๋ฐ์ดํฐ ์์ค๋ฅผ ์ฐ๊ฒฐํ๋ค. ์ผ๋ฐ์ ์ผ๋ก ViewModel์ด ์ด ์ญํ ์ ์ํํ๋ค.
๐ ํต์ฌ ๊ฐ๋ : UI ์์๋ ์ํ๋ฅผ ํํํ๋ ์ญํ ๋ง ๋ด๋นํ๊ณ , ์ํ ๊ด๋ฆฌ๋ ์ํ ํ๋(ViewModel)๊ฐ ์ฑ ์์ง๋๋ก ๋ถ๋ฆฌํ๋ ๊ฒ์ด ์ค์ํ๋ค.
2. ๋จ๋ฐฉํฅ ๋ฐ์ดํฐ ํ๋ฆ(UDF)์ ์ค์์ฑ
UDF(Unidirectional Data Flow)๋ UI ์ํ๊ฐ ํ ๋ฐฉํฅ์ผ๋ก๋ง ๋ณ๊ฒฝ๋๋ ๊ตฌ์กฐ๋ฅผ ์๋ฏธํ๋ค. ์ด๋ฅผ ํตํด ์์ธก ๊ฐ๋ฅํ๊ณ ์ ์ง๋ณด์ํ๊ธฐ ์ฌ์ด UI๋ฅผ ๋ง๋ค ์ ์๋ค.
๐ UDF์ ํ๋ฆ

- UI ์์๊ฐ ์ํ๋ฅผ ๋ ๋๋งํ๋ค.
- ์ฌ์ฉ์๊ฐ ์ด๋ฒคํธ๋ฅผ ๋ฐ์์ํค๋ฉด ์ด๋ฅผ ์ํ ํ๋(ViewModel)๋ก ์ ๋ฌํ๋ค.
- ์ํ ํ๋๊ฐ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๊ณ ์๋ก์ด UI ์ํ๋ฅผ ์์ฑํ๋ค.
- UI ์์๊ฐ ์๋ก์ด ์ํ๋ฅผ ๋ฐ์ํ์ฌ ํ๋ฉด์ ์ ๋ฐ์ดํธํ๋ค.
์ด๋ฌํ ํ๋ฆ์ ๋ฐ๋ฅด๋ฉด UI์ ์ํ ๊ด๋ฆฌ๊ฐ ๋ถ๋ฆฌ๋๋ฏ๋ก ์ฝ๋์ ๊ฐ๋ ์ฑ๊ณผ ์ฌ์ฌ์ฉ์ฑ์ด ๋์์ง๋ค.
3. ์ํ ํ๋์ ์ญํ ๊ณผ ๊ตฌํ ๋ฐฉ๋ฒ
์ํ ํ๋๋ UI ์ํ๋ฅผ ๊ด๋ฆฌํ๊ณ , UI ์์๊ฐ ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ฒ ๊ฐ์ ธ์ฌ ์ ์๋๋ก ๋๋ ์ค์ฌ์ ์ญํ ์ ํ๋ค.
โ๏ธ ์ํ ํ๋๋ก ViewModel์ ์ฌ์ฉํ๋ ์ด์
- ์๋ช ์ฃผ๊ธฐ์ ์ฐ๋: ViewModel์ ํ๋ฉด ํ์ ์ด๋ ๊ตฌ์ฑ ๋ณ๊ฒฝ์๋ ๋ฐ์ดํฐ๋ฅผ ์ ์งํ ์ ์๋ค.
- UI ์ํ ์ ์ฅ: ViewModel์์ StateFlow ๋๋ LiveData๋ฅผ ํ์ฉํด UI ์ํ๋ฅผ ๊ด๋ฆฌํ ์ ์๋ค.
- ๋น์ฆ๋์ค ๋ก์ง๊ณผ UI ๋ก์ง ๋ถ๋ฆฌ: ViewModel์ ํ์ฉํ๋ฉด UI ์ฝ๋์์ ๋ฐ์ดํฐ ์ฒ๋ฆฌ ๋ก์ง์ ๋ถ๋ฆฌํ ์ ์๋ค.
4. UI ์ด๋ฒคํธ ์ฒ๋ฆฌ
์ฌ์ฉ์์ ๋ฒํผ ํด๋ฆญ, ์คํฌ๋กค, ์ ๋ ฅ ๋ฑ ์ด๋ฒคํธ๋ฅผ ์ฒ๋ฆฌํ๋ ๋ฐฉ์๋ ์ค์ํ๋ค.
โ๏ธ ์ด๋ฒคํธ ์ฒ๋ฆฌ ์์น
- UI ์์๋ ViewModel์ ์ด๋ฒคํธ๋ฅผ ์ ๋ฌํ๊ณ , UI ์ํ๋ฅผ ์ง์ ๋ณ๊ฒฝํ์ง ์๋๋ค.
- ViewModel์์ ์ด๋ฒคํธ๋ฅผ ์ฒ๋ฆฌํ ํ ์๋ก์ด UI ์ํ๋ฅผ ์์ฑํ์ฌ UI ์์์ ์ ๋ฌํ๋ค.
- StateFlow ๋๋ LiveData๋ฅผ ์ฌ์ฉํด UI ์ํ ๋ณ๊ฒฝ ์ฌํญ์ UI ์์๊ฐ ๊ตฌ๋ (subscribe)ํ ์ ์๋๋ก ํ๋ค.
์ด ๋ฐฉ์์ UI ์์์ ์ํ ๋ก์ง์ ๋ถ๋ฆฌํ๊ณ , ์ด๋ฒคํธ ์ฒ๋ฆฌ ํ๋ฆ์ ์์ธก ๊ฐ๋ฅํ๊ฒ ํ๋ค.
5. UI ์ํ ์์ฑ ๋ฐ ๋ฐ์ดํฐ ํ๋ฆ
UI ์ํ๋ ๋ค์ํ ์์ค๋ฅผ ํตํด ์์ฑ๋๋ค.
โ๏ธ UI ์ํ๋ฅผ ๊ตฌ์ฑํ๋ ์ ๋ ฅ ์์ค
- ์ฌ์ฉ์ ์ ๋ ฅ: ๋ฒํผ ํด๋ฆญ, ํ ์คํธ ์ ๋ ฅ ๋ฑ์ ์ด๋ฒคํธ
- ๋ฐ์ดํฐ ๋ ์ด์ด: ๋คํธ์ํฌ API, ๋ฐ์ดํฐ๋ฒ ์ด์ค, SharedPreferences ๋ฑ
- ์ฑ์ ๋ด๋ถ ์ํ: ์ค์ ๊ฐ, ํ ๋ง ๋ณ๊ฒฝ, ๋คํธ์ํฌ ์ฐ๊ฒฐ ์ํ ๋ฑ
๐ ViewModel์์ UI ์ํ๋ฅผ ๊ด๋ฆฌํ๋ ๋ฐฉ๋ฒ
- StateFlow ๋๋ LiveData๋ฅผ ์ฌ์ฉํ์ฌ UI ์ํ๋ฅผ ์ ์ฅํ๊ณ UI ์์์์ ๊ตฌ๋
- ๋ฐ์ดํฐ๊ฐ ๋ณ๊ฒฝ๋ ๋๋ง๋ค UI ์ํ๋ฅผ ์๋กญ๊ฒ ์์ฑํ์ฌ UI์์ ๋ณ๊ฒฝ ์ฌํญ์ ๊ฐ์งํ๋๋ก ๊ตฌํ
6. UI ์ํ๋ฅผ ์ต์ ํํ๋ ๋ฐฉ๋ฒ
UI ์ํ๋ฅผ ์ต์ ํํ๋ฉด ์ฑ๋ฅ๊ณผ ์ ์ง๋ณด์์ฑ์ด ํฅ์๋๋ค.
โ๏ธ UI ์ํ ๊ด๋ฆฌ ์ ๊ณ ๋ คํ ์
- ๋ถํ์ํ ์ฌ๊ตฌ์ฑ(Recomposition) ์ต์ํ: Compose์์๋ remember์ rememberSaveable์ ํ์ฉํด ๋ถํ์ํ ๋ฆฌ์ปดํฌ์ง์ ์ ๋ฐฉ์ง
- UI ์ํ๋ฅผ ์บก์ํ: private val _uiState = MutableStateFlow() ์ ๊ฐ์ด ์ํ๋ฅผ private์ผ๋ก ๋ง๋ค๊ณ , ์ธ๋ถ์๋ StateFlow๋ก๋ง ๋ ธ์ถํ์ฌ ์ง์ ์์ ๋ฐฉ์ง
- Compose์ ViewModel ์ฐ๋: collectAsState()๋ฅผ ์ฌ์ฉํด ViewModel์ StateFlow๋ฅผ UI์์ ๊ตฌ๋
์ด๋ ๊ฒ ํ๋ฉด UI ์ํ ๋ณ๊ฒฝ์ด ๋ช ํํด์ง๊ณ , ๋ถํ์ํ UI ์ ๋ฐ์ดํธ๋ฅผ ๋ฐฉ์งํ ์ ์๋ค.
7. UI์ ์ํ๋ฅผ ๋ถ๋ฆฌํ๋ฉด ์ป์ ์ ์๋ ์ฅ์
- ์ ์ง๋ณด์์ฑ ์ฆ๊ฐ โ UI์ ๋ก์ง์ ๋ถ๋ฆฌํ์ฌ ์ฝ๋์ ๋ณต์ก๋๋ฅผ ๋ฎ์ถค
- ํ ์คํธ ์ฉ์ด์ฑ โ UI ์ํ๋ฅผ ๋ ๋ฆฝ์ ์ผ๋ก ํ ์คํธ ๊ฐ๋ฅ
- ์ฑ๋ฅ ์ต์ ํ โ ๋ถํ์ํ ๋ฆฌ์ปดํฌ์ง์ ๋ฐฉ์ง
๐ ViewModel + UDF + Compose๋ฅผ ํ์ฉํ๋ฉด ๋์ฑ ์ง๊ด์ ์ด๊ณ ๊ฒฌ๊ณ ํ UI ์ํคํ ์ฒ๋ฅผ ๊ตฌ์ถํ ์ ์๋ค.
๊ฒฐ๋ก
- ์๋๋ก์ด๋ UI ๋ ์ด์ด ์ํคํ ์ฒ๋ UI ์์์ ์ํ ํ๋์ ๋ถ๋ฆฌ, ๋จ๋ฐฉํฅ ๋ฐ์ดํฐ ํ๋ฆ, ์ต์ ํ๋ ์ํ ๊ด๋ฆฌ๋ฅผ ํตํด ์ ์ง๋ณด์์ฑ์ ๋์ด๋ ๊ฒ์ด ํต์ฌ์ด๋ค.
- ViewModel๊ณผ UDFํจํด์ ํ์ฉํ๋ฉด ์์ธก ๊ฐ๋ฅํ๊ณ ์ฑ๋ฅ์ด ์ข์ UI๋ฅผ ๊ตฌ์ถํ ์ ์๋ค.
'๐ค ์๋๋ก์ด๋ > ์ํคํ ์ฒ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์๋๋ก์ด๋] UI ์ํ ๊ด๋ฆฌ: ์ํ ํ๋(State Holder) (0) | 2025.03.30 |
---|---|
[์๋๋ก์ด๋] UI ์ด๋ฒคํธ (1) | 2025.03.29 |
[์๋๋ก์ด๋] ์๋๋ก์ด๋ ์ํคํ ์ฒ ๊ถ์ฅ์ฌํญ (0) | 2025.03.26 |
[์๋๋ก์ด๋] ์๋๋ก์ด๋ ์ข ์ ํญ๋ชฉ ์ฝ์ (DI) (0) | 2025.03.25 |
[์๋๋ก์ด๋] Android 4๋ ์ปดํฌ๋ํธ๋ฅผ ๋งค๋ํ์คํธ ์์ ์ ์ธํ๋ ๋ฐฉ๋ฒ (0) | 2025.03.24 |
์๋๋ก์ด๋ ์ฑ์ UI ๋ ์ด์ด๋ ์ฌ์ฉ์์์ ์ํธ์์ฉ์ ์ฒ๋ฆฌํ๋ฉฐ, ํ๋ฉด์ ๋ฐ์ดํฐ๋ฅผ ํ์ํ๋ ํต์ฌ์ ์ธ ์ญํ ์ ํ๋ค.
์ ์ง๋ณด์์ฑ๊ณผ ํ์ฅ์ฑ์ ๊ณ ๋ คํ UI๋ฅผ ๊ตฌ์ถํ๋ ค๋ฉด ๊ด์ฌ์ฌ์ ๋ถ๋ฆฌ, ๋จ๋ฐฉํฅ ๋ฐ์ดํฐ ํ๋ฆ(UDF), ์ํ ๊ด๋ฆฌ ๋ฑ์ ์์น์ ๋ฐ๋ฅด๋ ๊ฒ์ด ์ค์ํ๋ค.
1. UI ๋ ์ด์ด์ ํต์ฌ ๊ตฌ์ฑ ์์
UI ๋ ์ด์ด๋ ํฌ๊ฒ ๋ ๊ฐ์ง ์์๋ก ๊ตฌ์ฑ๋๋ค.

- UI ์์: View ๋๋ Jetpack Compose๋ฅผ ์ฌ์ฉํด UI๋ฅผ ๊ตฌ์ฑํ๋ค.
- ์ํ ํ๋(State Holder): UI ์ํ๋ฅผ ๊ด๋ฆฌํ๋ฉฐ, UI ์์์ ๋ฐ์ดํฐ ์์ค๋ฅผ ์ฐ๊ฒฐํ๋ค. ์ผ๋ฐ์ ์ผ๋ก ViewModel์ด ์ด ์ญํ ์ ์ํํ๋ค.
๐ ํต์ฌ ๊ฐ๋ : UI ์์๋ ์ํ๋ฅผ ํํํ๋ ์ญํ ๋ง ๋ด๋นํ๊ณ , ์ํ ๊ด๋ฆฌ๋ ์ํ ํ๋(ViewModel)๊ฐ ์ฑ ์์ง๋๋ก ๋ถ๋ฆฌํ๋ ๊ฒ์ด ์ค์ํ๋ค.
2. ๋จ๋ฐฉํฅ ๋ฐ์ดํฐ ํ๋ฆ(UDF)์ ์ค์์ฑ
UDF(Unidirectional Data Flow)๋ UI ์ํ๊ฐ ํ ๋ฐฉํฅ์ผ๋ก๋ง ๋ณ๊ฒฝ๋๋ ๊ตฌ์กฐ๋ฅผ ์๋ฏธํ๋ค. ์ด๋ฅผ ํตํด ์์ธก ๊ฐ๋ฅํ๊ณ ์ ์ง๋ณด์ํ๊ธฐ ์ฌ์ด UI๋ฅผ ๋ง๋ค ์ ์๋ค.
๐ UDF์ ํ๋ฆ

- UI ์์๊ฐ ์ํ๋ฅผ ๋ ๋๋งํ๋ค.
- ์ฌ์ฉ์๊ฐ ์ด๋ฒคํธ๋ฅผ ๋ฐ์์ํค๋ฉด ์ด๋ฅผ ์ํ ํ๋(ViewModel)๋ก ์ ๋ฌํ๋ค.
- ์ํ ํ๋๊ฐ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๊ณ ์๋ก์ด UI ์ํ๋ฅผ ์์ฑํ๋ค.
- UI ์์๊ฐ ์๋ก์ด ์ํ๋ฅผ ๋ฐ์ํ์ฌ ํ๋ฉด์ ์ ๋ฐ์ดํธํ๋ค.
์ด๋ฌํ ํ๋ฆ์ ๋ฐ๋ฅด๋ฉด UI์ ์ํ ๊ด๋ฆฌ๊ฐ ๋ถ๋ฆฌ๋๋ฏ๋ก ์ฝ๋์ ๊ฐ๋ ์ฑ๊ณผ ์ฌ์ฌ์ฉ์ฑ์ด ๋์์ง๋ค.
3. ์ํ ํ๋์ ์ญํ ๊ณผ ๊ตฌํ ๋ฐฉ๋ฒ
์ํ ํ๋๋ UI ์ํ๋ฅผ ๊ด๋ฆฌํ๊ณ , UI ์์๊ฐ ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ฒ ๊ฐ์ ธ์ฌ ์ ์๋๋ก ๋๋ ์ค์ฌ์ ์ญํ ์ ํ๋ค.
โ๏ธ ์ํ ํ๋๋ก ViewModel์ ์ฌ์ฉํ๋ ์ด์
- ์๋ช ์ฃผ๊ธฐ์ ์ฐ๋: ViewModel์ ํ๋ฉด ํ์ ์ด๋ ๊ตฌ์ฑ ๋ณ๊ฒฝ์๋ ๋ฐ์ดํฐ๋ฅผ ์ ์งํ ์ ์๋ค.
- UI ์ํ ์ ์ฅ: ViewModel์์ StateFlow ๋๋ LiveData๋ฅผ ํ์ฉํด UI ์ํ๋ฅผ ๊ด๋ฆฌํ ์ ์๋ค.
- ๋น์ฆ๋์ค ๋ก์ง๊ณผ UI ๋ก์ง ๋ถ๋ฆฌ: ViewModel์ ํ์ฉํ๋ฉด UI ์ฝ๋์์ ๋ฐ์ดํฐ ์ฒ๋ฆฌ ๋ก์ง์ ๋ถ๋ฆฌํ ์ ์๋ค.
4. UI ์ด๋ฒคํธ ์ฒ๋ฆฌ
์ฌ์ฉ์์ ๋ฒํผ ํด๋ฆญ, ์คํฌ๋กค, ์ ๋ ฅ ๋ฑ ์ด๋ฒคํธ๋ฅผ ์ฒ๋ฆฌํ๋ ๋ฐฉ์๋ ์ค์ํ๋ค.
โ๏ธ ์ด๋ฒคํธ ์ฒ๋ฆฌ ์์น
- UI ์์๋ ViewModel์ ์ด๋ฒคํธ๋ฅผ ์ ๋ฌํ๊ณ , UI ์ํ๋ฅผ ์ง์ ๋ณ๊ฒฝํ์ง ์๋๋ค.
- ViewModel์์ ์ด๋ฒคํธ๋ฅผ ์ฒ๋ฆฌํ ํ ์๋ก์ด UI ์ํ๋ฅผ ์์ฑํ์ฌ UI ์์์ ์ ๋ฌํ๋ค.
- StateFlow ๋๋ LiveData๋ฅผ ์ฌ์ฉํด UI ์ํ ๋ณ๊ฒฝ ์ฌํญ์ UI ์์๊ฐ ๊ตฌ๋ (subscribe)ํ ์ ์๋๋ก ํ๋ค.
์ด ๋ฐฉ์์ UI ์์์ ์ํ ๋ก์ง์ ๋ถ๋ฆฌํ๊ณ , ์ด๋ฒคํธ ์ฒ๋ฆฌ ํ๋ฆ์ ์์ธก ๊ฐ๋ฅํ๊ฒ ํ๋ค.
5. UI ์ํ ์์ฑ ๋ฐ ๋ฐ์ดํฐ ํ๋ฆ
UI ์ํ๋ ๋ค์ํ ์์ค๋ฅผ ํตํด ์์ฑ๋๋ค.
โ๏ธ UI ์ํ๋ฅผ ๊ตฌ์ฑํ๋ ์ ๋ ฅ ์์ค
- ์ฌ์ฉ์ ์ ๋ ฅ: ๋ฒํผ ํด๋ฆญ, ํ ์คํธ ์ ๋ ฅ ๋ฑ์ ์ด๋ฒคํธ
- ๋ฐ์ดํฐ ๋ ์ด์ด: ๋คํธ์ํฌ API, ๋ฐ์ดํฐ๋ฒ ์ด์ค, SharedPreferences ๋ฑ
- ์ฑ์ ๋ด๋ถ ์ํ: ์ค์ ๊ฐ, ํ ๋ง ๋ณ๊ฒฝ, ๋คํธ์ํฌ ์ฐ๊ฒฐ ์ํ ๋ฑ
๐ ViewModel์์ UI ์ํ๋ฅผ ๊ด๋ฆฌํ๋ ๋ฐฉ๋ฒ
- StateFlow ๋๋ LiveData๋ฅผ ์ฌ์ฉํ์ฌ UI ์ํ๋ฅผ ์ ์ฅํ๊ณ UI ์์์์ ๊ตฌ๋
- ๋ฐ์ดํฐ๊ฐ ๋ณ๊ฒฝ๋ ๋๋ง๋ค UI ์ํ๋ฅผ ์๋กญ๊ฒ ์์ฑํ์ฌ UI์์ ๋ณ๊ฒฝ ์ฌํญ์ ๊ฐ์งํ๋๋ก ๊ตฌํ
6. UI ์ํ๋ฅผ ์ต์ ํํ๋ ๋ฐฉ๋ฒ
UI ์ํ๋ฅผ ์ต์ ํํ๋ฉด ์ฑ๋ฅ๊ณผ ์ ์ง๋ณด์์ฑ์ด ํฅ์๋๋ค.
โ๏ธ UI ์ํ ๊ด๋ฆฌ ์ ๊ณ ๋ คํ ์
- ๋ถํ์ํ ์ฌ๊ตฌ์ฑ(Recomposition) ์ต์ํ: Compose์์๋ remember์ rememberSaveable์ ํ์ฉํด ๋ถํ์ํ ๋ฆฌ์ปดํฌ์ง์ ์ ๋ฐฉ์ง
- UI ์ํ๋ฅผ ์บก์ํ: private val _uiState = MutableStateFlow() ์ ๊ฐ์ด ์ํ๋ฅผ private์ผ๋ก ๋ง๋ค๊ณ , ์ธ๋ถ์๋ StateFlow๋ก๋ง ๋ ธ์ถํ์ฌ ์ง์ ์์ ๋ฐฉ์ง
- Compose์ ViewModel ์ฐ๋: collectAsState()๋ฅผ ์ฌ์ฉํด ViewModel์ StateFlow๋ฅผ UI์์ ๊ตฌ๋
์ด๋ ๊ฒ ํ๋ฉด UI ์ํ ๋ณ๊ฒฝ์ด ๋ช ํํด์ง๊ณ , ๋ถํ์ํ UI ์ ๋ฐ์ดํธ๋ฅผ ๋ฐฉ์งํ ์ ์๋ค.
7. UI์ ์ํ๋ฅผ ๋ถ๋ฆฌํ๋ฉด ์ป์ ์ ์๋ ์ฅ์
- ์ ์ง๋ณด์์ฑ ์ฆ๊ฐ โ UI์ ๋ก์ง์ ๋ถ๋ฆฌํ์ฌ ์ฝ๋์ ๋ณต์ก๋๋ฅผ ๋ฎ์ถค
- ํ ์คํธ ์ฉ์ด์ฑ โ UI ์ํ๋ฅผ ๋ ๋ฆฝ์ ์ผ๋ก ํ ์คํธ ๊ฐ๋ฅ
- ์ฑ๋ฅ ์ต์ ํ โ ๋ถํ์ํ ๋ฆฌ์ปดํฌ์ง์ ๋ฐฉ์ง
๐ ViewModel + UDF + Compose๋ฅผ ํ์ฉํ๋ฉด ๋์ฑ ์ง๊ด์ ์ด๊ณ ๊ฒฌ๊ณ ํ UI ์ํคํ ์ฒ๋ฅผ ๊ตฌ์ถํ ์ ์๋ค.
๊ฒฐ๋ก
- ์๋๋ก์ด๋ UI ๋ ์ด์ด ์ํคํ ์ฒ๋ UI ์์์ ์ํ ํ๋์ ๋ถ๋ฆฌ, ๋จ๋ฐฉํฅ ๋ฐ์ดํฐ ํ๋ฆ, ์ต์ ํ๋ ์ํ ๊ด๋ฆฌ๋ฅผ ํตํด ์ ์ง๋ณด์์ฑ์ ๋์ด๋ ๊ฒ์ด ํต์ฌ์ด๋ค.
- ViewModel๊ณผ UDFํจํด์ ํ์ฉํ๋ฉด ์์ธก ๊ฐ๋ฅํ๊ณ ์ฑ๋ฅ์ด ์ข์ UI๋ฅผ ๊ตฌ์ถํ ์ ์๋ค.
'๐ค ์๋๋ก์ด๋ > ์ํคํ ์ฒ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์๋๋ก์ด๋] UI ์ํ ๊ด๋ฆฌ: ์ํ ํ๋(State Holder) (0) | 2025.03.30 |
---|---|
[์๋๋ก์ด๋] UI ์ด๋ฒคํธ (1) | 2025.03.29 |
[์๋๋ก์ด๋] ์๋๋ก์ด๋ ์ํคํ ์ฒ ๊ถ์ฅ์ฌํญ (0) | 2025.03.26 |
[์๋๋ก์ด๋] ์๋๋ก์ด๋ ์ข ์ ํญ๋ชฉ ์ฝ์ (DI) (0) | 2025.03.25 |
[์๋๋ก์ด๋] Android 4๋ ์ปดํฌ๋ํธ๋ฅผ ๋งค๋ํ์คํธ ์์ ์ ์ธํ๋ ๋ฐฉ๋ฒ (0) | 2025.03.24 |