๋ชฉ์ฐจ
๋ค์ด๊ฐ๊ธฐ ์ ์
๋๋ 6์ 22์ผ ์ฃผ๋ง ์ ๋ ์
ํจ๊ป ํ๋ก์ ํธ๋ฅผ ํ๋ ๊ฐ๋ฐ์๋ถ๊ณผ ๋ฏธํธ๋ก ๋ชจ๋ฅด๋ ๋ถ๋ถ์ ๋ํด ์ด์ผ๊ธฐ ๋๋๋ ์์คํ ์๊ฐ์ ๊ฐ์ก๋ค.
๋ต๋ณ์ผ๋ก ๋ค์๋ ๋ด์ฉ์ ์ ๋ฆฌํด๋๊ณ ๊ณต๋ถํด๋ณด๋ ค ํ๋ค!!
event์ effect์ ์ฐจ์ด
์ง๋ ๋ฒ pr์ ํตํด ์ง๋ฌธ์ ๋๋ฆฐ ์ ์ด ์์๋ค. ๊ทธ๋ฌ๋ ์์ ํ ์ดํด๊ฐ ๋์ง ์์ ๋ค์ ํ๋ฒ ์ง๋ฌธ์ ๋๋ ธ๋ค.
๋ต๋ณ์ ์๋์ ๊ฐ์๋ค.
event๋ ์ฌ์ฉ์ ์์ฒญ, ์ฌ์ฉ์ ํ์์ ๊ด๋ จ๋ ๊ฒ
effect๋ ์ด๋ฒคํธ ๋์์ผ๋ก ๋ฐ์๋ ๊ฒ์ผ๋ก, ์ด๋ฒคํธ์ ๊ฒฐ๊ณผ๋ก์ ui์ ์ํ ๋ณํ ๋ฑ์ด ํฌํจ๋๋ค.
ํด๋ฆญ ์ด๋ฒคํธ๊ฐ ์ผ์ด๋๋ฉด click event -> click listener -> effect (์ด๋ฒคํธ ๊ฒฐ๊ณผ)
ํด๋ฆญ ์ด๋ฒคํธ๊ฐ ์ด๋ฃจ์ด์ง๋ฉด -> handle event -> ui ์ํ ๋ณํ
side effect !!
๋ด๊ฐ ์์ํ๋/์ํ๋ ๊ฒฐ๊ณผ์ ๋ค๋ฅธ ๊ฒฐ๊ณผ๊ฐ ๋ฐ์ํ ์ํฉ์ ์๋ฏธํ๋ค.
ํญ์ effect๊ฐ ์๋ ๊ฒ์ ์๋๊ณ ์์ ๋๋ ์๋ค.
effect o -> ์กํฐ๋นํฐ(ui)์์ ํด์ผํ ์ผ์ด ์์ ๋ (๋ทฐ๋ชจ๋ธ์์ ์ฒ๋ฆฌํ ์ ์์ ๋) effect๋ฅผ ๋ณด๋ธ๋ค.
effect x -> ๊ทธ๋ฅ ๋ฐฐ๊ฒฝ์์ด ๋ฐ๋๋ ๊ฒ
Result ์ฒ๋ฆฌ๋ ์ด๋ป๊ฒ ํ๋ฉด ์ข์๊น์?
result๋ฅผ ์ฑ๊ณต/์คํจ๋ก ๋๋์ด์ ์ฝ๋๋ฅผ ์ง๊ณ ์๊ธด ํ๋ฐ ์ด๋ค ์์ผ๋ก ์ฌ์ฉํด์ผํ ์ง ๊ธฐ์ค์ด ์์ด์ ์ด๋ ค์ ๋ค ใ ..ใ
๋ต๋ณ ๋ด์ฉ !!
๋ทฐ๋ชจ๋ธ์์๋ result๋ฅผ ๊ฐ์ง๊ณ ์์ ํ์๊ฐ ์๋ค๊ณ ํ์ จ๋ค.
result์ ์ฒ๋ฆฌ๋ usecase๋ฅผ ์์ฑํด์ ์ฒ๋ฆฌํด์ฃผ๋๋ก ํ๋ค.
์ด ๋ flow๋ฅผ ์ด์ฉํ ์ ์๋ค. flow๋ก ๋ฐ์ดํฐ์ ํ๋ฆ์ ์ฒ๋ฆฌํด์ค๋ค.
๋ํ getOrNulls( ) ๊ฒฐ๊ณผ ์ ์คํจํ์ผ๋ฉด ์ด์ฐจํผ null ๊ฐ์ด ์ค๊ธฐ ๋๋ฌธ์ ์กฐ๊ฑด๋ฌธ์ผ๋ก null์ธ์ง ์๋์ง๋ฅผ ํ์ธํด์ฃผ์ง ์์๋ ๋๋ค.
Flow๋ก ๊ผญ ๊ตฌ์ฑํ ํ์๋ ์์ง๋ง ๊ฐ๋ฐ์๋ถ๊ป์๋ ๋ฐ์ดํฐ ํ๋ฆ ๋ง๋ค์ด์ฃผ๊ธฐ + ์ถ๊ฐ์ ์ธ ์ฐ์ฐ์๋ก ๊ฐํธํ๊ฒ ์ฒ๋ฆฌ๊ฐ๋ฅํ ์ํฉ์ ์ํด ์ฌ์ฉํดใ ๋๋ค๊ณ ํ์ จ๋ค.
๊ฐ๋ฐ์๋์ ์ธ์ Flow๋ฅผ ์ฌ์ฉํด์ฃผ์๋์ง ๊ถ๊ธํด์ ์ถ๊ฐ ์ง๋ฌธ์ ๋๋ ธ์ ๋ ๋ค ์จ์ฃผ์ ๋ค๊ณ ํ์ จ๋ค !!
ใฐ๏ธflow
flow๋ ์ ์ฌ์ฉํ ๊น? ๋ผ๋ ์ง๋ฌธ์
์ฐ์์ ์ธ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํด์ฃผ๊ธฐ ์ํด์์ผ๊น์ ... ? ๋ผ๊ณ ๋ฐ์ ๋๋ต์ ๋ชปํ๋ค ๐ฅน
ํ์ flow์ ๋ํด ์ดํด๊ฐ ๋ถ์กฑํ๋ค. ์ด ๊ธฐํ์ ์ ๋๋ก ๊ณต๋ถ๋ฅผ ํด๋ด์ผ๊ฒ ๋ค !
๊ฐ๋ฐ์๋์ ์ด๋ฐ ์ง๋ฌธ์ ๋์ ธ์ฃผ์ จ๋ค.
return์ 1๋ฒ๋ง ๋๋๋ฐ ๋ง์ฝ return์ ์ฌ๋ฌ ๋ฒ ํ๊ณ ์ถ์ผ๋ฉด ์ด๋ป๊ฒ ๋ ๊น?
๊ทธ๋ด ๋ flow๋ฅผ ์ฌ์ฉํด์ฃผ๋ ๊ฑด๊ฐ์ .!!!??
๋ค Flow๋ฅผ ์ฌ์ฉํด์ emit์ 2๋ฒํด์ค ์ ์๋ค.
์ฐ๋ฆฌ๋ flow๋ฅผ ํตํด ๋ฐ์ดํฐ๊ฐ ์ฐ๊ฒฐ๋๋๋ก ํ๋ค. data streaming programming์ด ๋ชฉ์ ์ด๋ค.
flow ๊ณต๋ถ๋ฅผ ์ํ ๋งํฌ
https://developer.android.com/kotlin/flow?hl=ko
https://developer.android.com/codelabs/advanced-kotlin-coroutines?hl=ko#0
๋ง์ง๋ง์ผ๋ก ๋ฆฌ์ฌ์ดํด๋ฌ๋ทฐ๋ฅผ ๋ณด์ฌ์ฃผ๋ ๊ณผ์ ์์ ์ฌ๋ฌ ๋ฐ์ดํฐ(๊ฒ์๊ธ ๋ฐ์ดํฐ + ์ข์์ + ๋ถ๋งํฌ)๋ฅผ ํผํฉํด์ ํ๋์ ์์ดํ ์ผ๋ก ๋ณด์ฌ์ค์ผํ๋ ๊ฒฝ์ฐ๊ฐ ์์๋ค.
์ด ๋ ์ฌ๋ฌ ๋ฐ์ดํฐ๋ฅผ ์ด๋ป๊ฒ ๋ฌถ์ด์ ์ฒ๋ฆฌํ ์ง ์ด๋ ค์ ๋ค ใ ใ
์ด๋ถ๋ถ์ ๋ํด ์ง๋ฌธ์ ๋๋ ธ๋ค.
์ด๋ฅผ ํตํด flow +combine & map( ) ์ ํตํด ๋ฌถ์ด์ ์ฒ๋ฆฌํ ์ ์๋ ๋ฐฉ๋ฒ์ ์๊ฒ๋์๋ค.
์ด์ ๋ชจ๋ฅด๋ ๋ถ๋ถ์ ๋ํ ๋ฐฉ๋ฒ์ ์์์ผ๋ ๊ณต๋ถํ๊ณ ๊ธฐ์กด ์ฝ๋๋ฅผ ๊ฐ์ ํด๋ณด์ !!
'๐ค2024 ์๋๋ก์ด๋ > ๐ฟ ์ํ ํ๋ก์ ํธ ๊ฐ๋ฐ ์ผ์ง' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๐ ๋ฆฌ์คํธ ์ด๊ธฐํ์ ์ค์์ฑ.. (0) | 2024.08.24 |
---|---|
์ฌ๋ฌ ๊ฐ์ flow์ combine์ผ๋ก ์ฒ๋ฆฌํ๊ธฐ (0) | 2024.07.05 |
Android LiveData & StateFlow ์ฐจ์ด ๋น๊ตํด๋ณด๊ธฐ(์์ฑ์ค) (0) | 2024.06.14 |
Android Recyclerview : no attached adapter , skipping layout ์๋ฌ ํด๊ฒฐ ๊ณผ์ ๊ธฐ๋ก (0) | 2024.05.15 |
๋ก๊ทธ์ธ ์ฑ๊ณต ์ ์ฒ๋ฆฌ ์๋ฌ ํด๊ฒฐํ๊ธฐ (0) | 2024.05.13 |