Android
Flow Cold Stream(์ฝ๋ ์คํธ๋ฆผ), Hot Stream(ํซ ์คํธ๋ฆผ)
mygomii
2024. 5. 24. 20:19
๋ฐ์ํ
๐ก๋ชฉํ
- Cold Stream, Hot Stream์ ์ดํดํ๋ค.
๐ ์ ๋ฆฌํ๊ธฐ
Cold Stream
- ํ๋์ ์๋น์์๊ฒ ๊ฐ์ ๋ณด๋
- ์์ฑ๋ ์ดํ์ ๋๊ตฐ๊ฐ ์๋นํ๊ธฐ ์์ํ๋ฉด ๋ฐ์ดํฐ ๋ฐํ
- ์ํ๊ฐ ๋ณํ์ง ์๋ ๊ฐ์ ์ฝ์ ๋ ๋ฐ์ดํฐ ๋ฒ ์ด์ค๋ฅผ ์ฝ๊ฑฐ๋ URL์ ํตํด์ ์๋ฒ๊ฐ์ ์ฝ๋ ๊ฒฝ์ฐ ๊ตฌํ
- flow ์์ฑ: flow ๋น๋๋ฅผ ์ฌ์ฉํ์ฌ ์ฝ๋ ์คํธ๋ฆผ์ ์์ฑ. ์ด๋ ๋ฐ์ดํฐ ํญ๋ชฉ์ emit ์ผ๋ก ๋ฐฉ์ถ → ์คํธ๋ฆผ์ด ์์๋ ๋ ๋ก๊ทธ ์ถ๋ ฅ
- ๊ตฌ๋ ์ ์ํ: ์คํธ๋ฆผ์ด ์์ฑ๋์์ง๋ง ์์ง ์์ง์๊ฐ ์์ผ๋ฏ๋ก ์๋ฌด๋ฐ ์์ ๋ ์ํ x
- ๊ตฌ๋ : ์ฒซ ๋ฒ์งธ ๊ตฌ๋ ์๋ launch๋ฅผ ์ฌ์ฉํ์ฌ ์ฝ๋ฃจํด์ ์์ํ๊ณ , coldFlow.collect๋ฅผ ํธ์ถํ์ฌ ์คํธ๋ฆผ์ ๊ตฌ๋ ์ด๋ ์คํธ๋ฆผ์ ๋ฐ์ดํฐ๋ฅผ ๋ฐฉ์ถํ๊ธฐ ์์
- ๋ ๋ฒ์งธ ๊ตฌ๋ ์: ๋ ๋ฒ์งธ ๊ตฌ๋ ์๋ 3์ด ํ์ ์คํธ๋ฆผ์ ๊ตฌ๋ ํ๊ธฐ ์์. ์ด ๊ตฌ๋ ์๋ ๊ตฌ๋ ์์ ๋ถํฐ ๋ฐ์ดํฐ๋ฅผ ์์ง
- joinAll ์ฌ์ฉ: ๋ชจ๋ ์ฝ๋ฃจํด ์์ ์ด ์๋ฃ๋ ๋๊น์ง joinAll์ ์ฌ์ฉํ์ฌ ๋๊ธฐ
⇒ ๊ฐ ๊ตฌ๋ ์๊ฐ ์คํธ๋ฆผ์์ ๋ฐ์ดํฐ๋ฅผ ์์งํ๋ ๊ณผ์ ์ ํตํด ์ฝ๋ ์คํธ๋ฆผ์ ํน์ฑ์ ๋ณด์ฌ์ค. ์ฝ๋ ์คํธ๋ฆผ์ ๊ตฌ๋ ์๊ฐ ์๊ธธ ๋๋ง๋ค ์๋ก ์์๋๋ฉฐ, ๊ฐ ๊ตฌ๋ ์๋ ์ฒ์๋ถํฐ ๋ฐ์ดํฐ๋ฅผ ์์ง
Hot Stream
- ํ๋ ์ด์์ ์๋น์์๊ฒ ๊ฐ์ ๋ณด๋
- ๋ฐ์ดํฐ ๋ฐํ์ด ์์ ๋ ์ดํ๋ถํฐ ๋ชจ๋ ์๋น์์๊ฒ ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ๋ฐํํ๊ณ ๊ตฌ๋ ์๊ฐ ์๋ ๊ฒฝ์ฐ์ ๋ฐ์ดํฐ ๋ฐํ
- ์ํ๊ฐ ๋ณํ๋ ๊ฐ์ ์ฝ์ ๋ ๋คํธ์ํฌ ์ํ ์ ๋ณด ๊ฐ์ ์ป์ด์ฌ ๋ ์ฌ์ฉํ ์ ์์
- MutableSharedFlow ์์ฑ: MutableSharedFlow๋ฅผ ์ฌ์ฉํ์ฌ ํซ ์คํธ๋ฆผ์ ์์ฑ
- ๋ฐ์ดํฐ ๋ฐฉ์ถ: launch๋ฅผ ์ฌ์ฉํ์ฌ ์ฝ๋ฃจํด์ ์์ํ๊ณ , repeat์ delay๋ฅผ ์ฌ์ฉํ์ฌ 1์ด๋ง๋ค ๋ฐ์ดํฐ๋ฅผ ๋ฐฉ์ถ. sharedFlow.emit์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์คํธ๋ฆผ์ ๋ฐฉ์ถ
- ์ฒซ ๋ฒ์งธ ๊ตฌ๋ ์: ์ฒซ ๋ฒ์งธ ๊ตฌ๋ ์๋ ์ ํ๋ฆฌ์ผ์ด์ ์ด ์์๋์๋ง์ ์คํธ๋ฆผ์ ๊ตฌ๋ sharedFlow.collect๋ฅผ ํธ์ถํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์์ง
- ๋ ๋ฒ์งธ ๊ตฌ๋ ์: ๋ ๋ฒ์งธ ๊ตฌ๋ ์๋ 5์ด ํ์ ์คํธ๋ฆผ์ ๊ตฌ๋ ํ๊ธฐ ์์. ์ด ๊ตฌ๋ ์๋ ๊ตฌ๋ ์์ ๋ถํฐ ๋ฐฉ์ถ๋๋ ๋ฐ์ดํฐ๋ฅผ ์์ง
- joinAll ์ฌ์ฉ: ๋ชจ๋ ์ฝ๋ฃจํด ์์ ์ด ์๋ฃ๋ ๋๊น์ง joinAll ์ ์ฌ์ฉํ์ฌ ๋๊ธฐ
⇒ ๊ฐ ๊ตฌ๋ ์๊ฐ ์คํธ๋ฆผ์์ ๋ฐ์ดํฐ๋ฅผ ์์งํ๋ ๊ณผ์ ์ ํตํด ํซ ์คํธ๋ฆผ์ ํน์ฑ์ ๋ณด์ฌ์ค
git repository
๋ฐ์ํ