[Android] UI architecture - Phases
#1 ๊ฐ์
Jetpack Compose ๋จ๊ณ | Android Developers
์ด ํ์ด์ง๋ Cloud Translation API๋ฅผ ํตํด ๋ฒ์ญ๋์์ต๋๋ค. Jetpack Compose ๋จ๊ณ ์ปฌ๋ ์ ์ ์ฌ์ฉํด ์ ๋ฆฌํ๊ธฐ ๋ด ํ๊ฒฝ์ค์ ์ ๊ธฐ์ค์ผ๋ก ์ฝํ ์ธ ๋ฅผ ์ ์ฅํ๊ณ ๋ถ๋ฅํ์ธ์. ๋๋ถ๋ถ์ ๋ค๋ฅธ UI ๋๊ตฌ ํคํธ์ ๋ง์ฐฌ๊ฐ
developer.android.com
์ ๊ณต์ ๋ฌธ์๋ฅผ ๋์ ์ธ์ด๋ก ์ ๋ฆฌํ๋ค.
#2 Compose Runtime์ 3๋จ๊ณ
#2-1 ๋์๋
Jetpack Compose๊ฐ UI๋ฅผ ๊ทธ๋ ค๋ด๋ ๊ณผ์ ์ ๋์๋. Layout ๋จ๊ณ๋ ์ด ๋จ๊ณ๋ ์ธก์ (measurement)๊ณผ ๋ฐฐ์น(placement)๋ผ๋ ๋ ๊ฐ์ง์ ํ์ ๋จ๊ณ๋ก ๊ตฌ์ฑ๋๋ค. ๊ฐ ๋จ๊ณ์ ๋ํ ๊ฐ๋ฝํ ์ค๋ช ์ ๋ค์๊ณผ ๊ฐ๋ค.
1. Composition: '๋ฌด์'(What)์ ๋ณด์ฌ์ค์ง ๊ฒฐ์ . '๋ฌด์'์ด๋, ํ์ ํ UI Tree๋ฅผ ๋งํ๋ค.
2. Layout: ์ด๋(Where)์, ์ด๋ค ํฌ๊ธฐ๋ก ๋ ์ง ๊ฒฐ์ .
2-1. Measurement (์ธก์ ): ์ปจํ ์ด๋ ์์์ ๊ทธ ์ปจํ ์ด๋์ ๋ค์ด๊ฐ ์์ ์์๋ค์ด ์์ ์ ํฌ๊ธฐ๋ฅผ ๊ฒฐ์ .
2-2. Placement (๋ฐฐ์น): ๊ฐ๊ฐ์ ์ปจํ ์ด๋ ์์์ ์์ ์์๋ฅผ 2D ์ขํ๊ณ์์ ์ ์ ํ ์์น์ ๋ฐฐ์น.
3. Drawing: Layout ๋จ๊ณ์์ ๊ฒฐ์ ๋๋๋ก ํ๋ฉด์ UI๋ฅผ ๊ทธ๋ฆผ.
#2-2 ๋จ๋ฐฉํฅ ๋ฐ์ดํฐ ํ๋ฆ
๋ง์น ๋ฌผ์ด ์์์ ์๋๋ก ํ๋ฅด๋ฏ, Compose์ 3๋จ๊ณ๋ ๊ฐ ๋จ๊ณ์ ์์๋ฅผ ์งํค๋ฉฐ ๋จ๋ฐฉํฅ ๋ฐ์ดํฐ ํ๋ฆ(Unidirectional Data Flow, UDF)์ ๋ฐ๋ฅธ๋ค. ์ผ๋ถ ํน๋ณํ ์ปดํฌ์ ๋ธ์์๋ ์ด ํ๋ฆ์ ์ญํํ๊ธฐ๋ ํ๋๋ฐ ๊ฐ๋ น BoxWithConstraints, LazyColumn๋ LazyRow๋ ๋ถ๋ชจ์ Layout ๋จ๊ณ๊ฐ ์์์ Composition ๋จ๊ณ์ ์์กดํ๋ค.
#3 Composition phase
์์ ์์ 'layout node'๋ ์ปจํ ์ด๋ ์ญํ ์ ์ํํ๋ node๋ผ๊ณ ๋ณด๋ฉด ๋๋ค (์ด๋ป๊ฒ ๋ถ๋ฅด๋ ์ง๋ ์ ํ ์ค์ํ์ง ์๊ธฐ ๋๋ฌธ์ ๋ฌด์ํ๊ณ ๋์ด๊ฐ๋ ๋๋ค). ์ด๋ฌํ UI Tree ๊ฐ ๋ ธ๋์ ์์ฑ์ ํ๋ก๊ทธ๋๋จธ์ ์๋๋๋ก ์๋ํ๋ ๋ฐ๋ณต๋ฌธใ์กฐ๊ฑด๋ฌธ์ด ๊ด์ฌํ๊ธฐ๋ ํ๋ค. ์ฆ ์ฝ๋ ์์ฒด๋ ๊ฐ๋๋ผ๋, ๋ด๋ถ ๋ณ์ ๋ฑ์ ๋ณํ๋ก UI Tree์ ๋ชจ์์ด ์ผ๋ง๋ ์ง ๋ณํํ ์ ์๋ค๋ ์๊ธฐ๋ค.
#4 Layout phase
#4-1 ์ ๋๋ฉ์ด์
Layout ๋จ๊ณ๋ Composition ๋จ๊ณ์์ ์์ฑํ๋ UI Tree์ ์์กดํ๋ค. Layout ๋จ๊ณ์์๋ ๊ฐ ๋ ธ๋์ ํ๋ฉด ์ ํฌ๊ธฐ๋ฅผ ์ธก์ (Measurement)ํ๊ณ ์ด๋์ ๋ฐฐ์น(Placement)ํ ์ง๋ฅผ ๊ฒฐ์ ํ๋ค.
#4-2 ์์
์์ธํ ์ค๋ช ์ด ๊ณ๋ค์ฌ์ง ์ธก์ ๋ฐ ๋ฐฐ์น์ ์์๋ค.
#5 Drawing phase
#5-1 ์ ๋๋ฉ์ด์
๊ฐ ๋
ธ๋๋ฅผ ๊ทธ๋ ค๋ด์ด ์ค์ ์ฐ๋ฆฌ๊ฐ ๋ณด๋ ํ๋ฉด์ผ๋ก ๋ง๋๋ ๋จ๊ณ๋ค.
#5-2 ์์
Composition ๋จ๊ณ์์ ๋ง๋ค์๋ UI Tree๋ฅผ ๋ค์ ์ํํ๋ค. ์์์ ์๋๋ก ๊ฐ๋ ๋ฐฉํฅ์ผ๋ก ์ํํ๊ธฐ ๋๋ฌธ์ ๋ฐ๋์ ๋ถ๋ชจ๊ฐ ๋จผ์ ๊ทธ๋ ค์ง๋ค.
#6 ์ด์ด์ง๋ ๊ธ
[Android] UI architecture - Phase์ State
#1 ์ด์ ๊ฒ์๊ธhttps://kenel.tistory.com/300์ ๊ฒ์๊ธ์์ ์ด์ด์ง๋ค. #2 State [Android] Jetpack Compose - State ๊ธฐ์ด#1 ๊ฐ์ ์ํ ๋ฐ Jetpack Compose | Android Developers์ด ํ์ด์ง๋ Cloud Translation API๋ฅผ ํตํด ๋ฒ์ญ๋
kenel.tistory.com
์ ๊ฒ์๊ธ์์ ์ด์ด์ง๋ค.