| ์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | ||
| 6 | 7 | 8 | 9 | 10 | 11 | 12 |
| 13 | 14 | 15 | 16 | 17 | 18 | 19 |
| 20 | 21 | 22 | 23 | 24 | 25 | 26 |
| 27 | 28 | 29 | 30 |
- android
- textstyle
- previewparameterprovider
- Compose
- ์๋๋ก์ด๋
- ์์กด์ฑ ์ฃผ์
- ๊ตฌ์กฐ์ ๋์์ฑ
- ์ฝ์ธ
- ์ฃผ์ฐจ๋ณ ๊ณต๋ถ ๋ด์ฉ
- Coroutine
- ๋ฐ์ธ๋ฉ
- ๊ฐ๋ฐ์
- ์ฝ๋ฃจํด
- BaseObservable
- 2์ฝ
- ์์กด์ฑ
- binding
- structured concurrency
- data
- ๋ฐ์ดํฐ๋ฐ์ธ๋ฉ
- DI
- ์ญํด
- ๊ฐ๋ฐ์ฐจ๊ธฐ
- ์๋๋ก์ด๋ ๋ฐ์ดํฐ๋ฐ์ธ๋ฉ
- ์ญํ์ ๋๊ฐ์ฐจ๊ธฐ
- databinding
- koin
- android Koin
- Kotlin
- 1์ฝ
- Today
- Total
๋ชฉ๋ก์ ์ฒด ๊ธ (32)
๐ป ๊ฐ๋ฐ์ฐจ๊ธฐ ๐ฅ feat.Android
์๋๋ก์ด๋ ๊ฐ๋ฐ์ ์ค ๊ฒฝ๋ ฅ 4๋ ์ด ๋์ ์จ๋ณด๋ ๋น์ ๊ณต์์ ๊ฐ๋ฐ๊ธฐ"๋น์ ๊ณต์ ๊ฐ๋ฐ์" ์ฌ์ค ์ด ๋ง์ด ์ข๊ฒ ๋ค๋ ธ๋ ์ ์ ์๋ ๊ฑฐ ๊ฐ๋ค. ๋๋ ๋ํ๋ฏผ๊ตญ ๋จ์๋ผ๋ฉด ๋๊ตฌ๋ ํ๋ค๋ ํ๊ถ๋๋ฅผ ์ด๋ฑํ๊ต 4ํ๋ , ๋จ๋ค๋ณด๋ค๋ ์ข ๋ฆ๊ฒ ์์ํ๋ค.ํ์ง๋ง ๋ฆ๊ฒ ์์ํ ๋๋ถ์ธ์ง(์ฌ์ค ์ฌ๋ฐ์ด์) ์ง๊ธ๊น์ง๋ ๊ณ์ํ๊ณ ์๋ค. ๋๋ ๋๊ตฐ๊ฐ์ ๋ง์ฐฐ ํน์ ์ธ์์ ๊ทน๋๋ก ์ซ์ดํด ์ ํผํ๊ณ ์ฌ๋๋ค์๊ฒ ์ ๋ง์ถฐ์ฃผ๋ ์ฑ๊ฒฉ์ด๋ค.๊ทธ๋ฐ๋ฐ ์ฌ์ค ํ๊ถ๋๋ ๊ฒฉํฌ ์ข ๋ชฉ์ด๋ผ ์ง์ํ๊ธฐ ์ด๋ ต๋ค๊ณ ์๊ฐํ์ง๋ง ํ๊ถ๋ ์๋ฒ ์ข ๋ชฉ์ผ๋ก ํ๋ฉด ๊ฒฝ์, ๊ฒฉํฌ ๋ถ๋ถ์ด ๊ฑฐ์ ์์ด ์ข์ ๋ถ๋ถ๋ง ๋จ๊ฒ๋ ์ง์ํ ์ ์์๋ค. ํ๊ถ๋์ฅ์ด ํ๊ถ๋ ์๋ฒ์ ์ข ๋ ์ง์ค์ ์ผ๋ก ๊ต์กํ๋ ๊ณณ์ด๋ผ ์กํ๊ตฌ ํ๊ถ๋ ์๋ฒ๋จ์๋ ์ด๋ ต์ง ์๊ฒ ์ ๋จํ๊ณ 5๋ ๊ฐ ํ๋ํ๋ค ์ฃผ์ฅ๊น์ง ํ๊ณ ๊ณ ๋ฑํ๊ต์ ๊ฐ์ด ์กธ์ ํ๊ฒ ๋๋ค...
"๊ฐ์ด๋ ์ฐธ์กฐ๋, ๊ทธ๊ฒ์ด ๋ฌธ์ ๋ก๋ค." 1. ๋ค์ด๊ฐ๋ฉฐkotlin์ ์ฐ๋ค๋ณด๋ฉด class๋ ๊ธฐ๋ณธ์ด๊ณ data class๋ ๋ชจ๋ธ, Compose์ MVI ํจํด์ ์ํ ๋ฑ์ ๋ด๋ ๋จ๊ณจ ๋ฉ๋ด์ ๋๋ค.์ด์ฉ์ง ์ ๋ data class๋ ํธํ๊ณ , class๋ ๋ญ๊ฐ ์ ๋๋ก ํด์ผํ ๊ฒ๋ง ๊ฐ์ด ๋๊ปด์ง๊ธฐ๋ ํฉ๋๋ค.ํ์ง๋ง ๋์ ์ฐจ์ด๋ฅผ ๋จ์ํ "toString๊ณผ ๊ฐ์ ํจ์๋ค์ด ์๋ ์์ฑ๋๋ค~" ๊ฐ์ ์์ค์์๋ง ์ดํดํ๋ฉด ์ถ๊ฐ์ ์ธ ์ง๋ฌธ๊ณผ๊น๊ฒ ๋ชจ๋ฅด๋ ๊ฑฐ ์๋? ๋ผ๊ณ ์๊ฐํ ์ ์์ด ๋ธ๋ก๊น ํ๋ฉฐ ์ ๋๋ก ์ ๋ฆฌํด๋ณด๋ ค ํฉ๋๋ค.2. ๊ธฐ๋ณธ ๋ฌธ๋ฒ ๋น๊ตํญ๋ชฉclassdata class๊ธฐ๋ณธ ๋ชฉ์ ๋ชจ๋ ๊ฐ์ฒด๊ฐ ๊ฐ์ฒด(Value Object)์๋ ์์ฑ์์equals(), hashCode(), toString(), copy(), componentN() ๋ฑ์์O (..
์ฐ๊ฒ ๋ ์ด์ ์ฝ๋ฃจํด์ ์ฐ๋ค ๋ณด๋ฉด scope, Job, cancel, launch, async ๊ฐ์ ๊ฐ๋ ๋ค์ ์์ฐ์ค๋ฝ๊ฒ ๋ง๋๊ฒ ๋ฉ๋๋ค.์ฒ์์ "์ ๊ทธ๋ฅ ์ฐ๋ ๋๋๊ตฐ" ํ๋ฉด์ ๋์ด๊ฐ๋๋ฐ, ์ ์ ๋ณต์กํ ๊ตฌ์กฐ์์ ์์ ์ฝ๋ฃจํด์ด ์ ๋๋ก ์ ๋ฆฌ๋์ง ์๊ฑฐ๋ ๋ถ๋ชจ๊ฐ ์ทจ์๋๋ฉด ๋ชจ๋ ์์ ์ด ๋ฉ์ถ๋ ๊ฑธ ๊ฒฝํํ๋ฉด์ ๊ตฌ์กฐ์ ๋์์ฑ(Structured Concurrency)์ด ์ ์ค์ํ์ง, ์ด๋ฐ ํน์ฑ์ ์ ๊ฐ๊ณ ์๋์ง ๊ถ๊ธํด์ ธ์ ์ฐ๊ฒ๋์ต๋๋ค.๊ตฌ์กฐ์ ๋์์ฑ์ด๋?๊ตฌ์กฐ์ ๋์์ฑ์ ๊ฐ๋จํ ๋งํด์์ (์ฝ๋ฃจํด)์ด ํธ๋ฆฌ ๊ตฌ์กฐ(๋๋ฌด ๋ฟ๋ฆฌ๋ฅผ ์๊ฐ)๋ก ์กฐ์ง๋์ด ์๊ณ , ๋ถ๋ชจ-์์ ๊ด๊ณ๋ฅผ ํตํด ์๋ช ์ฃผ๊ธฐ๋ฅผ ํจ๊ป ๊ด๋ฆฌํ๋ ๋ฐฉ์์ ๋๋ค.์ฆ, ๋ถ๋ชจ ์ฝ๋ฃจํด์ด ์ทจ์๋๋ฉด ์์ ์ฝ๋ฃจํด๋ ํจ๊ป ์ทจ์๋๊ณ ,๋ฐ๋๋ก ์์ ์ค ํ๋์์ ์์ธ๊ฐ ๋ฐ์ํด ๋ถ๋ชจ๊ฐ ์ทจ์๋๋ฉด ๋ค๋ฅธ ์์๋ ..
์์ํ๋ฉด์์ ์ ๋ ๋๊ตฐ๊ฐ ์ง๋์ ์ฝ๋๋ฅผ ์์ ํ๋ ์ผ์ด ์์๋๋ฐ ๊ทธ๋ Mutex๋ฅผ ๋ดค์๋ค.์ฒ์ ๋ดค์ ๋ ์ด๊ฒ ๋ญ๊ฐ... ์ด๋ป๊ฒ ๋์ํ๋์ง ๋ชจ๋ฅด๊ณ ๊ทธ๋ฅ ๋์ด๊ฐ๋ค.๊ทธ๋์ Mutex(๋ฎคํ ์ค)๋ฅผ ๊ฒ์ํด๋ณด๋ ๋ฐ๋ผ์ค๋ Semaphore(์ธ๋งํฌ์ด).๊ฐ๋ณ๊ฒ ๊ณต๋ถํด๋ณด๋ ์๊ฐ์ ๊ฐ์ง๋ ค๊ณ ํ๋ค.์ค๋ช ๋จผ์ Mutex์ Semaphore๋ ์๋ ์ค๋ช ์ ๋ํ ๊ฒ ๋๋ฌธ์ ์กด์ฌํฉ๋๋ค"๋์ ํ๋ก๊ทธ๋๋ฐ์์ ๊ณต์ ์์์ ๋ํ ์ ๊ทผ์ ์ ํํ์ฌ ๋ฐ์ดํฐ์ ๋ฌด๊ฒฐ์ฑ์ ์ ์งํ๊ธฐ ์ํด ์ฌ์ฉ" ๋ด๊ฐ ์ดํดํ๋๋ก ์ค๋ช ์ ์ถ๊ฐํ์๋ฉด, ์ปดํจํฐ๋ ํ ํ๋ก์ธ์ค ์์์ ์ฌ๋ฌ ์ค๋ ๋(๊ณต์ ์์)๋ฅผ ๊ฐ์ง๊ณ ์์ ์ ๋๋ ์ ์งํํ ์ ์์ต๋๋ค.๊ทผ๋ฐ ์ด๋ A(๊ณต์ ์์)์์ ์์ ํ ๊ฒฐ๊ณผ๋ฅผ ๊ฐ์ง๊ณ B(๊ณต์ ์์)์ด ์ด๋ ํ ๊ฒฐ๊ณผ ์ฒ๋ฆฌ๋ฅผ ํด์ผํ๋ ์ํฉ์์ ์์ง A๊ฐ ์์ ์ด ๋๋์ง ์..
๊ธ ์ฐ๋ ์ด์ Compose๋ฅผ ์ฌ์ฉํด์ ์ฃผ๋ก UI๋ฅผ ๊ทธ๋ฆฌ๊ณ ์๋๋ฐ ๊ฐ์ฅ ์ค์ํ Recomposition์ ๋ํด์ ๋ธ๋ก๊น ์ ํ์ง ์์ ๊ฒ์ ์ผ ์ค๋ฅ๋ผ๊ณ ์๊ฐํด์ ์์ฑํ๊ฒ ๋์ต๋๋ค. ํญ์ ๊ฐ์๋ ๋ฉด์ ์ด๋ Recomposition์ด ๋ญ๋ ๋ถํฐ ์์ํด์ ๊ทธ๋ผ ์ต์ ํ ํ๋ ๋ฐฉ๋ฒ๊ณผ ์ด๋ป๊ฒ ํ์ธ ํด๋ดค๋ ๋ฑ๋ฑ ๋ง์ ์ง๋ฌธ๋ค์ด ์์์ต๋๋ค. ๊ทธ๊ฑธ ํ ๋ฒ ์ ๋๋ก ์์๋๊ณ ๊ณต๋ถ๋ ํ ๊ฒธ ์์ํฉ๋๋ค.์ฝ๋ฉํธ ๋ฌดํ ํ์์ ๋๋ค. Recomposition ์ค๋ช Recomposition์ด๋!์ฑ์ ์ํ ๋ณํ์ ๋ฐ๋ผ ๋ณ๊ฒฝ๋ composable์ ๋ค์ ์คํํ๊ณ , ์ด๋ฅผ ๋ฐ์ํ์ฌ Composition์ ์ ๋ฐ์ดํธํ๋ ๊ณผ์ ์ ์๋ฏธํฉ๋๋ค. ์ฝ๊ฒ ์ค๋ช ํ๋ฉด ์ฒ์ ํ๋ฉด์ด ๊ทธ๋ ค์ง๊ณ ๋์ ์ํ(State)๋ฅผ ๋ณด๊ณ ์๋ UI๊ฐ ์ํ ๋ณํ์ ๋ฐ๋ผ ๋ค์ ๊ทธ๋ ค์ง๋ค! ๋ ๋ง..