๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿค2024 ์•ˆ๋“œ๋กœ์ด๋“œ/๐Ÿฟ ์˜ํ™” ํ”„๋กœ์ ํŠธ ๊ฐœ๋ฐœ ์ผ์ง€

๐Ÿ˜‡ ๋ฆฌ์ŠคํŠธ ์ดˆ๊ธฐํ™”์˜ ์ค‘์š”์„ฑ..

by hyeonha 2024. 8. 24.

๋ชฉ์ฐจ

    ์ธํ„ด์„ ํ•˜๋ฉด์„œ ๋‚จ๋Š” ์‹œ๊ฐ„๋™์•ˆ ๊ฐœ๋ฐœ์„ ํ•˜๋‹ค๋ณด๋‹ˆ ๋ธ”๋กœ๊ทธ๋ฅผ ์“ธ ์‹œ๊ฐ„์ด ์—†์–ด์„œ ๋Šฆ์–ด๋ฒ„๋ ธ๋„ค์œ ๐Ÿฅน 

    ์˜ค๋Š˜์€ ์–ผ๋งˆ ์ „ 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()์„ ํ†ตํ•ด ์ดˆ๊ธฐํ™”ํ•ด์ฃผ์–ด์„œ ํ•ด๊ฒฐํ•˜์˜€๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ํ•œ ๊ฒ€์ƒ‰์–ด ๋‹น ํŽ˜์ด์ง€์— ๋”ฐ๋ฅธ ๋ฐ์ดํ„ฐ ๋ˆ„์ ์„ ์ถ”๊ฐ€ํ•ด์•ผํ•˜๋ฏ€๋กœ ์ด ๋กœ์ง์€ ์ถ”ํ›„ ์ˆ˜์ •ํ•ด์•ผํ•œ๋‹น

    728x90