๋ชฉ์ฐจ
์ธํด์ ํ๋ฉด์ ๋จ๋ ์๊ฐ๋์ ๊ฐ๋ฐ์ ํ๋ค๋ณด๋ ๋ธ๋ก๊ทธ๋ฅผ ์ธ ์๊ฐ์ด ์์ด์ ๋ฆ์ด๋ฒ๋ ธ๋ค์ ๐ฅน
์ค๋์ ์ผ๋ง ์ stateFlow ํํ์ ๋ณ์์ ๊ฐ์ ์ ๋ฐ์ดํธํด์ฃผ๋ค๊ฐ ๊ฒช์ ๋ฌธ์ ๋ฅผ ๊ณต์ ํด๋ณด๋ ค ํฉ๋๋ค!
์ด์ ๊น์ง ์ํ ๊ฒ์ ๊ธฐ๋ฅ์ ๊ตฌํํ๊ณ ์๊ณ ์์๋๋ฐ, ๊ฒ์์ฐฝ์์ ์ํ๋ฅผ ๊ฒ์ํ ํ ๊ฒ์๋ฒํผ์ ํด๋ฆญํ๋ฉด ์ฌ๋ฆ ํค์๋๋ฅผ ๊ฐ์ง 20๊ฐ์ ์ํ ๋ฐ์ดํฐ๊ฐ ์จ๋ค.
๋๋ฒ๊น ๊ฒฐ๊ณผ ์ด๋ ๊ฒ 20๊ฐ๊ฐ ์๋ค.
๐ฑ ๋ฌธ์ ๋ฐ์
๊ทธ๋ฐ๋ฐ ๋ฌธ์ ๋ ๋ค์ ๋์ผํ ํค์๋๋ฅผ ๊ฒ์ํ ๋ ๋ฐ์ํ์๋ค..!!!
๊ฐ์ ํค์๋ ๋ฐ์ดํฐ๋ผ๋ฉด 1๋ฒ๋ง ๋ณด์ฌ์ผํ๋ค. ๊ทธ๋ฌ๋ 20๊ฐ์ ๋ฐ์ดํฐ ์๋์ ๋์ผํ 20๊ฐ์ ๋ฐ์ดํฐ๊ฐ ์ถ๊ฐ๋์ด์ ์ด 40๊ฐ์ ๋ฐ์ดํฐ๊ฐ ๋ณด์ด๊ณ ์์๋ค.
๋ฆฌ์คํธ๊ฐ ์ด๊ธฐํ๊ฐ ์๋๋? ์ถ์ด์ ๋ทฐ๋ชจ๋ธ ์์์ list.clear() ๋ ํด์ฃผ๊ณ _movieList.value = emptyList(), _movieList.update{ emptyList() } ๋ฑ๋ฑ ์ฌ๋ฌ ๋ฐฉ๋ฒ์ ์๋ํ๋๋ฐ ์๋ฌด๋ฆฌํด๋ ๊ณ์ ์ค๋ณต๋ ๋ฐ์ดํฐ๊ฐ ํ๋ฉด์ ๋ณด์๋ค.
๐ฅธ๋ฆฌ์คํธ ํด๋ฆฌ์ด์ ์ค์์ฑ
๊ทธ๋ฐ๋ฐ ๋ฌธ์ ๋ ๋ทฐ๋ชจ๋ธ์ด ์๋๋ผ,,, use case์ ์์๋ค.
ํ์ฌ ์ ์ฆ ์ผ์ด์ค ์์์ ๋ ํฌ์งํ ๋ฆฌ๋ฅผ ์ฐธ์กฐํ๊ณ , ์๋ฒ ํธ์ถ์ ํด์ค ํ flow ํํ๋ก ๋ฐ์ดํฐ๋ฅผ ๋ฐํํด์ค๋ค.
๊ทธ๋ฆฌ๊ณ ๋ทฐ๋ชจ๋ธ์์ ํด๋น flow๋ฅผ ์์ง collect ํ ํ ๊ทธ๋ฆฌ๋๋ทฐ์ ํ์ํด์ฃผ๊ณ ์์๋ค.
์ฌ๊ธฐ์ ์ด์ ์ฌํ๊ด๋ จ ์ํ๋ฅผ ์ฐพ๊ณ ์ถ์ด์ ์ฌํ์ ๊ฒ์ํ๋ค๋ฉด?
- ์ํ๋ ๊ฒ์ : ์ฌํ ๊ด๋ จ ๋ฐ์ดํฐ๋ก ํ๋ฉด์ ๋ณด์ด๋ ํฌ์คํฐ๋ค์ด ๋ณ๊ฒฝ๋๋ ๊ฒ์ด๋ค.
- ๊ทธ๋ฌ๋ ์ค์ ์ํ๋ ๊ฒ์ : ๋ฐ๋ผ ๋ผ๊ณ ๊ฒ์ํ์ฌ ๋ฌ ์ํ ํฌ์คํฐ๋ค ๋ค์ ์ฌํ ๊ด๋ จ ์์ด ํฌ์คํฐ๊ฐ ๋ํด์ง ํํ์๋ค.
๋ฌธ์ ๋ ๋จ์ํ๋ค. ์ค์ ๋ก๋ ๊ฑฐ์ 3์ผ ๋๊ฒ ๋ทฐ๋ชจ๋ธ ์ฝ๋๋ฅผ ๋ณ๊ฒฝํ์ง๋ง ใ ใ ใ ์ ์ฆ์ผ์ด์ค๊ฐ ์์ธ์ด์๋ค.
์๋ฒ ํธ์ถ์ ์๋ต๊ฐ์ธ result๋ฅผ ์ป๊ณ
result ๋ด๋ถ์ results์์ posterPath๊ฐ ์๋ค๋ฉด ์ด ํฌ์คํฐ uri๋ฅผ list์ ๋ํด์ฃผ๋ ์์ ์ ํ๊ณ ์์๋ค.
๋๋ ์ ์ฆ ์ผ์ด์ค๊ฐ ๋งค๋ฒ ์๋ก ํธ์ถ๋๋ค๊ณ ์๊ฐํ์ฌ์ list๋ ๋งค๋ฒ ์ด๊ธฐํ๋ ๊ฑฐ๋ผ๊ณ ์๊ฐํ๋ค.๊ทธ๋ฌ๋ ์๋์๋ค.
์ค์ ๋ก๋ list์ ์ด์ ๋ฐ์ดํฐ๋ค์ด ๋์ ํด์ ๋ํด์ง๊ณ ์์๋ ๊ฒ์ด๋ค...!
list์ ํฌ์คํฐ uri์ ๋ํด์ฃผ๊ธฐ ์ ์ list๋ฅผ ์ด๊ธฐํํ๊ธฐ ์ํด clear()ํ๋ ์์ ์ ์ถ๊ฐํด์ฃผ์๋ค.
list.clear()
result?.getOrNull()?.results?.forEach {
if (it.posterPath != null) {
list.add(it)
}
}
๋๋์ด ํด๊ฒฐ ...!!!!
์ ์ ์ฆ ์ผ์ด์ค๊ฐ ๋งค๋ฒ ์๋ก ํธ์ถ๋์ง ์๋ ๊ฒ์ธ์ง๋ ์์๋ณด๊ณ ๋ด์ฉ์ ์ถ๊ฐํด๋ด์ผ๊ฒ ๋น
๋ฆฌ์คํธ ์ด๊ธฐํ๋์ง ์๋ ์์ธ ์์๋ณธ ๊ฒฐ๊ณผ
๋ทฐ๋ชจ๋ธ ์์ฑ ์ ์ ์ฆ ์ผ์ด์ค์ ๋ํ ๊ฐ์ฒด๋ฅผ ์์ฑํ๊ณ , ๋ทฐ๋ชจ๋ธ์ด ์ด์์๋ ๋์ ๊ทธ ๊ฐ์ฒด๋ 1๊ฐ์ด๊ธฐ ๋๋ฌธ์ ๋ฆฌ์คํธ๋ ๊ณ์ ๋์ ๋๋ ๊ฒ์ด์๋ค....!!!!!!!
ํ์ฌ๋ list์ ํฌ์คํฐ ๋ฆฌ์คํธ๋ฅผ ์ถ๊ฐํด์ฃผ๊ธฐ ์ ์ list.clear()์ ํตํด ์ด๊ธฐํํด์ฃผ์ด์ ํด๊ฒฐํ์๋ค. ๊ทธ๋ฌ๋ ํ ๊ฒ์์ด ๋น ํ์ด์ง์ ๋ฐ๋ฅธ ๋ฐ์ดํฐ ๋์ ์ ์ถ๊ฐํด์ผํ๋ฏ๋ก ์ด ๋ก์ง์ ์ถํ ์์ ํด์ผํ๋น
'๐ค2024 ์๋๋ก์ด๋ > ๐ฟ ์ํ ํ๋ก์ ํธ ๊ฐ๋ฐ ์ผ์ง' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
launch๋ ๊ธฐ๋ค๋ ค์ฃผ์ง ์๋๋ค. (async, await , first etc) (8) | 2024.10.11 |
---|---|
Android : ๊ฐ์๋ฌธ ๋ฑ๋ก ๊ณผ์ ์ ๋ฆฌ (5) | 2024.08.29 |
์ฌ๋ฌ ๊ฐ์ flow์ combine์ผ๋ก ์ฒ๋ฆฌํ๊ธฐ (0) | 2024.07.05 |
์ฝ๋ ์ง๋ฌธ & ๋ต๋ณ ์ ๋ฆฌ (0) | 2024.06.24 |
Android LiveData & StateFlow ์ฐจ์ด ๋น๊ตํด๋ณด๊ธฐ(์์ฑ์ค) (0) | 2024.06.14 |