๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ“ฑ| Android/๐Ÿ“˜ | ๊ธฐ๋ก

[Android] liveData, stateFlow์™€ ํ•จ๊ป˜ ๋ณด๋Š” MVVM์— ๋Œ€ํ•œ ๊ณ ์ฐฐ

by immgga 2024. 11. 11.
๋ฐ˜์‘ํ˜•

์ถœ์ฒ˜: unsplash.com

 

์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ๋Š” ์ €๋ฒˆ ํฌ์ŠคํŒ…์—์„œ ์–ธ๊ธ‰ํ–ˆ๋‹ค์‹œํ”ผ, clean architecture์™€ ํ•จ๊ป˜ ์‹ค๋ฌด์—์„œ ๋ฐ˜ํ•„์ˆ˜์ ์œผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ๋””์ž์ธ ํŒจํ„ด์ธ mvvm์— ๋Œ€ํ•ด ๊ณต๋ถ€ํ•ด์„œ ์ ์–ด๋ณด๊ณ ์ž ํ•œ๋‹ค.

๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๊ณต๋ถ€ํ•˜๋ฉด์„œ ์ฐธ๊ณ ํ•œ ํฌ์ŠคํŒ…๋„ ๊ฐ™์ด ๋งํฌ๋กœ ๋‚จ๊ฒจ ๋†“๊ฒ ๋‹ค.

 

MVVM์€ ๋ฌด์—‡์ผ๊นŒ?

MVVM์— ๊ด€ํ•ด์„œ๋Š” ์ฐพ์•„๋ณด๋ฉด ์ž๋ฃŒ๊ฐ€ ๋งŽ์ด ๋‚˜์˜ค๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ„๋‹จํ•˜๊ฒŒ ์ •์˜ํ•ด ๋ณด๋ฉด,

MVC์™€ MVP์—์„œ view์™€ ์—ฎ์ด๋Š” ์˜์กด์„ฑ์„ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด view model์„ ๋„์ž…ํ•œ ๋””์ž์ธ ํŒจํ„ด.
MVVM์€ model, view, view model์˜ ์•ฝ์ž๋‹ค.

 

์—ฌ๊ธฐ์„œ view model๊ณผ view๋Š” 1 : n์˜ ๊ด€๊ณ„๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋‹ค๋Š” ํŠน์ง•์„ ์ง€๋‹Œ๋‹ค.

 

MVVM์„ ์™œ ์“ฐ๋Š” ๊ฑธ๊นŒ?

mvvm ๋””์ž์ธ ํŒจํ„ด์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์žฅ์ ์„ ๊ฐ€์ง„๋‹ค.

  1. ์˜์กด์„ฑ ์ตœ์†Œํ™”
    view๋Š” view model์„ ์•Œ์ง€๋งŒ, view model์€ view๋ฅผ ๋ชจ๋ฅด๊ณ , view model์€ model์„ ์•Œ์ง€๋งŒ, model์€ view model์„ ๋ชจ๋ฅธ๋‹ค.
    ์ด๋Ÿฌํ•œ ๋‹จ๋ฐฉํ–ฅ ์˜์กด์„ฑ์œผ๋กœ ์ธํ•ด ๊ฐ ์š”์†Œ์˜ ์ˆ˜์ •์ด ๋‹ค๋ฅธ ์š”์†Œ์— ๋ฏธ์น˜๋Š” ์˜ํ–ฅ์ด ์ค„์–ด๋“ ๋‹ค.
  2. ๊ด€์‹ฌ์‚ฌ์˜ ๋ถ„๋ฆฌ
    activity, fragment์— ๋ชจ๋“  ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•ด ์•ฑ ๋™์ž‘ ์†๋„ ์ €ํ•˜, ์œ ์ง€๋ณด์ˆ˜์˜ ์–ด๋ ค์›€, ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ์˜ ์–ด๋ ค์›€์ด ์ƒ๊ธฐ๋Š” ๊ธฐ์กด์˜ ์ฝ”๋“œ์˜ ๋ฌธ์ œ์ ์„ ํ•ด๊ฒฐํ•ด ์ค€๋‹ค.
    ๊ฐ ์š”์†Œ์˜ ์—ญํ• ์ด ๋ช…ํ™•ํ•ด์ ธ ๊ฐ€๋…์„ฑ๊ณผ ์œ ์ง€ ๋ณด์ˆ˜์„ฑ์ด ํ–ฅ์ƒ๋œ๋‹ค.
    ํ•œ ๋กœ์ง์—์„œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•ด๋„ ๋‹ค๋ฅธ ๋ถ€๋ถ„์— ๋ฏธ์น˜๋Š” ์˜ํ–ฅ์„ ์ตœ์†Œํ™”ํ•  ์ˆ˜ ์žˆ๋‹ค.
  3. ๋ฐ˜์‘ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ
    activity, fragment์—์„œ live data์™€ data binding์„ ์ด์šฉํ•ด ๋ฐ์ดํ„ฐ๊ฐ€ ๋ฐ”๋€” ๋•Œ, ๊ทธ๊ฒƒ์— ๋ฐ˜์‘ํ•˜๋Š” ๋™์ž‘์„ ์ˆ˜ํ–‰ํ•˜๊ฒŒ ํ•  ์ˆ˜ ์žˆ๋‹ค.
    view model์˜ ๋ฐ์ดํ„ฐ์™€ ์—ฐ๊ฒฐ๋œ view์˜ ui๋Š” view model์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ๋ณ€๊ฒฝ๋  ๋•Œ๋งˆ๋‹ค, ๊ทธ์— ๋งž๋Š” ui๋ฅผ ์งค ์ˆ˜ ์žˆ๋‹ค๋Š” ๋œป์ด๋‹ค.

์œ„ ์žฅ์ ์ด ์žˆ์–ด์„œ mvvm์˜ ์‚ฌ์šฉ์„ ์ง€ํ–ฅํ•˜๋Š” ๋“ฏํ•˜๋‹ค.

๊ฒฐ๋ก ์€ view์™€ model์˜ ์˜์กด์„ฑ์„ ๋ถ„๋ฆฌํ•ด ์˜์กด์„ฑ์„ ์ตœ์†Œํ™”ํ•˜๊ณ , ui์— ๋ชจ๋‘ ์ž‘์„ฑ๋˜์—ˆ๋˜ ์ฝ”๋“œ๋ฅผ ๋‹ค๋ฅธ ์š”์†Œ๋กœ ์˜ฎ๊ฒจ ๊ด€์‹ฌ์‚ฌ๋ฅผ ๋ถ„๋ฆฌํ•˜๊ณ  live data, data binding๊ณผ ํ•จ๊ป˜ ์‚ฌ์šฉํ•ด ๋ฐ˜์‘ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ฐฉ์‹์˜ ๊ฐœ๋ฐœ์ด ๊ฐ€๋Šฅํ•˜๊ธฐ ๋•Œ๋ฌธ์— mvvm์„ ์‚ฌ์šฉํ•œ๋‹ค.

 

๋” ๋งŽ์€ ์ •๋ณด๋Š” ์•„๋ž˜์˜ ๊ธ€๋“ค์„ ์ฐธ๊ณ  ๋ฐ”๋ž€๋‹ค.

Android์—์„œ MVVM ํŒจํ„ด์ด ์ค‘์š”ํ•œ ์ด์œ 

 

Android์—์„œ MVVM ํŒจํ„ด์ด ์ค‘์š”ํ•œ ์ด์œ 

์ˆ˜๋งŽ์€ ์•„ํ‚คํ…์ฒ˜ ํŒจํ„ด ์ค‘ ๊ทธ๋Œ€ ๋‹จ ํ•˜๋‚˜

kevinlim17.com

Android์—์„œ์˜ MVVM์€ ๋ฌด์—‡์ด๊ณ  ์™œ ์‚ฌ์šฉํ•˜๋Š”๊ฐ€

 

Android์—์„œ์˜ MVVM์€ ๋ฌด์—‡์ด๊ณ  ์™œ ์‚ฌ์šฉํ•˜๋Š”๊ฐ€

์ด์ „ ๊ธฐ๋ก์—์„œ ์•„ํ‚คํ…์ฒ˜ ๊ฐœ์„ ์„ ์œ„ํ•œ ์ด์•ผ๊ธฐ๋ฅผ ํ–ˆ์—ˆ๋‹ค. ๊ฐœ์„ ์„ ์œ„ํ•œ ์ปดํฌ๋„ŒํŠธ(Component)๋“ค์„ ์‚ฌ์šฉํ•˜๊ณ , MVVM ๋””์ž์ธ ํŒจํ„ด์„ ์ ์šฉํ•˜๊ธฐ๋กœ ํ–ˆ์—ˆ๋‹ค. ์ด๋ฒˆ ๊ธฐ๋ก์—์„œ๋Š” ์ด MVVM ๋””์ž์ธ ํŒจํ„ด์ด ๋ฌด์—‡์ธ์ง€๋ฅผ

devsoboro.tistory.com

[Android] MVVM ํŒจํ„ด๊ณผ ์ ์šฉ๋ฐฉ์‹

 

[Android] MVVM ํŒจํ„ด๊ณผ ์ ์šฉ๋ฐฉ์‹

[Android] MVVM ํŒจํ„ด๊ณผ ์ ์šฉ๋ฐฉ์‹

velog.io

 

MVVM์˜ ๊ตฌ์กฐ

  1. model
    ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ ์ฒ˜๋ฆฌ, ๋ฐ์ดํ„ฐ ๊ด€๋ จ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ์ฒ˜๋ฆฌ.
    view์— ๋Œ€ํ•œ ๋กœ์ง์€ ๊ฐ€์ง€์ง€ ์•Š์•„์•ผ ํ•œ๋‹ค.
     โ†ณ db, api ์ ‘๊ทผ์— ๋Œ€ํ•œ ์ฒ˜๋ฆฌ๋ฅผ ์ง„ํ–‰ํ•˜๊ฑฐ๋‚˜, db, api ์ ‘๊ทผ์— ๋Œ€ํ•œ result data class๋ฅผ ์ •์˜ํ•œ๋‹ค.
  2. view
    ui๋ฅผ ์ •์˜ํ•œ๋‹ค.
    view model์˜ ๋ฐ์ดํ„ฐ์— ๋”ฐ๋ผ ๊ทธ์— ๋งž๋Š” ui๋กœ ๋ณ€๊ฒฝํ•œ๋‹ค.
     โ†ณ view model์˜ live data ๋ฐ์ดํ„ฐ๋ฅผ observe ํ•ด์„œ ๋ฐ์ดํ„ฐ์— ๋”ฐ๋ฅธ ui๋กœ ๋ณ€๊ฒฝํ•œ๋‹ค.
  3. view model
    view์™€ model ์‚ฌ์ด์˜ ๋งค๊ฐœ์ฒด.
    view์˜ ์ƒํƒœ, ui์— ๋Œ€ํ•œ ๋กœ์ง ๊ตฌํ˜„.
     โ†ณ model์—์„œ ๋ถˆ๋Ÿฌ์˜จ api ์ ‘๊ทผ์— ๋Œ€ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ live data๋ฅผ ํ†ตํ•ด view๋กœ ๋„˜๊ฒจ์ค€๋‹ค.

 

๋” ์ž์„ธํ•œ ์ •๋ณด๋Š” ์•„๋ž˜์˜ ๊ธ€ ์ฐธ๊ณ .

[Android/Design Pattern] MVVM ๋””์ž์ธ ํŒจํ„ด์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์ž!

 

[Android/Design Pattern] MVVM ๋””์ž์ธ ํŒจํ„ด์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์ž!

์ „์— MVP ์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์•˜์Šต๋‹ˆ๋‹ค. ์ด๋ฒˆ์—๋Š” ๊ฐ๊ฐ์˜ ๋””์ž์ธ ํŒจํ„ด์˜ ๋‹จ์ ์„ ๋ณด์™„ํ•˜๊ธฐ ์œ„ํ•ด ๋งŒ๋“ค์–ด์ง„ MVVM ์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. MVVM ์ด๋ž€? MVVM ํŒจํ„ด์€ Model - View - ViewModel ๋ฅผ ํ•ฉ์นœ ์šฉ์–ด์ž…๋‹ˆ๋‹ค. Model

minhyuuk.tistory.com

 

MVVM์—์„œ์˜ liveData, stateFlow

mvvm์„ ๊ณต๋ถ€ํ•˜๋‹ค ๋ณด๋ฉด ์—ญ์‹œ ๊ผญ ๊ฐ™์ด ์–ธ๊ธ‰๋˜๋Š” ๊ฐœ๋… ์ค‘ ํ•˜๋‚˜๊ฐ€ live data์ด๋‹ค.

live data๋Š” android jetpack ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ๊ธฐ๋Šฅ ์ค‘ ํ•˜๋‚˜๋กœ,

๋ฐ์ดํ„ฐ์˜ ๋ณ€๊ฒฝ์„ ๊ด€์ฐฐํ•  ์ˆ˜ ์žˆ๋Š” data holder ํด๋ž˜์Šค์ด๋‹ค.
์ผ๋ฐ˜์ ์ธ observable๊ณผ๋Š” ๋‹ฌ๋ฆฌ, android์˜ ์ƒ๋ช…์ฃผ๊ธฐ๋ฅผ ์•Œ๊ณ  ์žˆ๋‹ค. ๊ทธ๋ž˜์„œ ์ƒ๋ช…์ฃผ๊ธฐ๊ฐ€ started ๋˜๋Š” resumed ์ƒํƒœ์ผ ๋•Œ๋งŒ ๋ฐ์ดํ„ฐ๋ฅผ ์—…๋ฐ์ดํŠธํ•œ๋‹ค.
observer ๊ฐ์ฒด์™€ ํ•จ๊ป˜ ์‚ฌ์šฉ๋œ๋‹ค. live data์˜ ๋ฐ์ดํ„ฐ์— ๋ณ€ํ™”๊ฐ€ ์ผ์–ด๋‚ฌ์„ ๋•Œ, ๋“ฑ๋ก๋œ observer์— ๋ณ€ํ™”๋ฅผ ์•Œ๋ฆฌ๊ณ , observer์˜ onChanged() ๋ฉ”์„œ๋“œ๊ฐ€ ์‹คํ–‰๋œ๋‹ค.

 

๊ฒฐ๊ตญ์€ ๋ฐ์ดํ„ฐ๋ฅผ ๋“ค๊ณ  ์žˆ๋‹ค๊ฐ€ ๋ณ€๊ฒฝ๋  ๋•Œ observer์—์„œ ๋ณ€๊ฒฝ๋œ ๊ฐ’์„ ์•Œ ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ์—ญํ• ์„ ํ•˜๊ณ  ์žˆ๋‹ค.

์„ค๋ช…์— ๋‚˜์™€์žˆ๋Š” ๊ฒƒ์ฒ˜๋Ÿผ, ๋งŽ์€ ์žฅ์ ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.

 

ํ•˜์ง€๋งŒ live data๋ฅผ ์ญ‰ ํŒŒ๊ณ  ๋“ค์–ด๊ฐ€๋‹ค ๋ณด๋ฉด state flow๋ผ๋Š” ๊ฐœ๋…๋„ ์‰ฝ๊ฒŒ ์ฐพ์•„๋ณผ ์ˆ˜ ์žˆ๋‹ค.

state flow๋Š” coroutine flow์˜ ํ•˜์œ„ ํด๋ž˜์Šค๋กœ, ์ƒํƒœ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๊ฐ’์„ ์ง€์†์ ์œผ๋กœ ๋ฐฐ์ถœํ•  ์ˆ˜ ์žˆ๋‹ค.
์ดˆ๊ธฐ ์ƒํƒœ๊ฐ€ ์žˆ์–ด์•ผ ํ•˜๋ฉฐ, collect๋ฅผ ์ค‘๋‹จํ•˜์ง€ ์•Š๊ณ  ์ƒ๋ช…์ฃผ๊ธฐ๊ฐ€ destroy ๋  ๋•Œ๊นŒ์ง€ ๊ฐ’์„ ๋ถˆ๋Ÿฌ์˜จ๋‹ค.

 

state flow ๊ด€๋ จ ์ž๋ฃŒ๋“ค์„ ๋ณด๋ฉด ํ•ญ์ƒ live data์™€ ์—ฎ์ด๋ฉด์„œ state flow๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒŒ ์ข‹๋‹ค๊ณ  ํ•œ๋‹ค.

์–ด๋–ค ์ ์ด live data๋ณด๋‹ค ๋‚˜์€์ง€ ์•Œ์•„๋ณด์ž.

 

liveData vs stateFlow

state flow๋Š” live data์— ๋น„ํ•ด ์•„๋ž˜์™€ ๊ฐ™์€ ์žฅ์ ์ด ์žˆ๋‹ค.

  1. coroutine scope(์ฝ”๋ฃจํ‹ด ๋ฒ”์œ„)์—์„œ ์•ˆ์ „ํ•˜๊ฒŒ ์‚ฌ์šฉ.
    activity, fragment๊ฐ€ destroy ๋˜๊ฑฐ๋‚˜ view๊ฐ€ ๋ถ„๋ฆฌ๋œ ๊ฒฝ์šฐ ๋ฐ์ดํ„ฐ ๋ˆ„์ถœ์„ ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ๋‹ค.
  2. ๋ถˆ๋ณ€์„ฑ ๋ณด์žฅ.
    live data์™€๋Š” ๋‹ฌ๋ฆฌ state flow์—์„œ๋Š” ๊ฐ’์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†์œผ๋ฉฐ, ์ƒˆ๋กœ์šด ์ƒํƒœ ๊ฐ’์„ ๋ฐฐ์ถœํ•  ๋•Œ๋งˆ๋‹ค ์ƒˆ๋กœ์šด ๊ฐ์ฒด๊ฐ€ ์ƒ์„ฑ๋œ๋‹ค.
    ์˜ˆ๊ธฐ์น˜ ์•Š์€ ๊ฐ’ ๋ณ€๊ฒฝ์„ ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

๊ทธ๋Ÿฌ๋ฉด live data๋Š” ์–ด๋–ค ๋‹จ์ ์ด ์žˆ๊ธธ๋ž˜ state flow์— ๋ฐ€๋ ค์„œ ์•ˆ ์“ฐ์ด๊ฒŒ ๋˜๋Š” ๊ฑธ๊นŒ?

  1. ๋น„๋™๊ธฐ ์ŠคํŠธ๋ฆผ์— ๋ถ€์ ํ•ฉ.
    live data์˜ ๊ด€์ฐฐ์€ ์˜ค์ง main thread์—์„œ๋งŒ ์ง„ํ–‰๋˜๊ธฐ ๋•Œ๋ฌธ์— android clean architecture์˜ data layer์—์„œ live data๋ฅผ ์ด์šฉํ•ด ๋ฐ์ดํ„ฐ ์ŠคํŠธ๋ฆผ์„ ์ฒ˜๋ฆฌํ•˜๋ ค๊ณ  ํ•˜๋ฉด ํ•œ๊ณ„๊ฐ€ ์ƒ๊ธด๋‹ค.
  2. clean architecture์˜ domain์—์„œ ์‚ฌ์šฉํ•˜๊ธฐ ๋ถ€์ ํ•ฉ.
    ์ผ๋ฐ˜์ ์œผ๋กœ clean architecture์˜ domain layer๋Š” ์˜์กด์„ฑ์„ ๊ฐ€์ง€์ง€ ์•Š๋Š” ์ˆœ์ˆ˜ํ•œ kotlin/java ์ฝ”๋“œ๋กœ ์ด๋ฃจ์–ด์ ธ์•ผ ํ•˜๋Š” layer์ด๋‹ค.
    live data๋Š” aac ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ด๊ธฐ ๋•Œ๋ฌธ์— domain layer์—์„œ ์‚ฌ์šฉํ•˜๋ฉด clean architecture ์›์น™์— ์œ„๋ฐฐ๋œ๋‹ค.

 

live data์˜ ๋‹จ์ ๋“ค์€ ๋ชจ๋‘ state flow๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํ•ด๊ฒฐ์ด ๊ฐ€๋Šฅํ•œ ๋ฌธ์ œ๋“ค์ด๋‹ค.

  • state flow๋Š” coroutine ๊ธฐ๋ฐ˜์ด๊ธฐ ๋•Œ๋ฌธ์— ๋น„๋™๊ธฐ ์ŠคํŠธ๋ฆผ์— ์ ํ•ฉํ•˜๋‹ค.
  • state flow๋Š” ์ˆœ์ˆ˜ํ•œ kotlin ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ด๊ธฐ ๋•Œ๋ฌธ์— clean architecture ์›์น™์— ์œ„๋ฐฐ๋˜์ง€ ์•Š๋Š”๋‹ค.

 

๋” ์ž์„ธํ•œ ์ •๋ณด๋ฅผ ์•Œ๊ณ  ์‹ถ์œผ๋ฉด ์•„๋ž˜ ํฌ์ŠคํŒ…์— ๋” ์ž์„ธํ•œ ์ •๋ณด๊ฐ€ ์žˆ๋‹ค.

[Android] LiveData์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์ž

 

[Android] LiveData์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์ž

์•ž์„  ๊ธ€์—์„œ ViewModel์—์„œ ์•Œ์•„๋ณด์•˜์Šต๋‹ˆ๋‹ค. ์ด์ œ ์šฐ๋ฆฌ๋Š” ViewModel์ด ์–ด๋–ค ์—ญํ• ์„ ํ•˜๋Š”์ง€ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ViewModel์„ ํ†ตํ•ด UI ๊ด€๋ จ ๋ฐ์ดํ„ฐ๋ฅผ ๊ด€๋ฆฌํ•ด์ฃผ๊ณ  View์— ๋ฐ์ดํ„ฐ๋ฅผ ๊ทธ๋ ค์ค„ ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์••๋‹ˆ๋‹ค.

ardor-dev.tistory.com

StateFlow๋ž€?

 

StateFlow ๋ž€?

StateFlow๋Š” ์ฝ”๋ฃจํ‹ด ํ”Œ๋กœ์šฐ์˜ ํ•˜์œ„ ํด๋ž˜์Šค๋กœ, ์ƒํƒœ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๊ฐ’์„ ์ง€์†์ ์œผ๋กœ ๋ฐฐ์ถœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. StateFlow๋Š” ๋งค์šฐ ์œ ์‚ฌํ•œ ๋™์ž‘์„ ์ˆ˜ํ–‰ํ•˜๋Š” LiveData์™€ ๋น„๊ตํ•˜์—ฌ ๋ช‡ ๊ฐ€์ง€ ์žฅ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋จผ์ € State

velog.io

[Android] LiveData... ๋„Œ ๋ˆ„๊ตฌ๋ƒ?

 

[Android] LiveData...๋„Œ ๋ˆ„๊ตฌ๋ƒ?

์•ˆ๋…•ํ•˜์„ธ์š”.์ด๋ฒˆ ํฌ์ŠคํŒ…์˜ ์ฃผ์ œ๋Š” LiveData ์ž…๋‹ˆ๋‹ค.์•ˆ๋“œ๋กœ์ด ์•„ํ‚คํ…์ณ ํŒจํ„ด(MVP, MVM, MVVM ๋“ฑ)์—์„œ ๋น ์งˆ ์ˆ˜ ์—†๋Š” ๊ฒƒ๋“ค์ด ๋ช‡๊ฐ€์ง€ ์กด์žฌ ํ•˜๋Š”๋ฐ์š”.๊ทธ์ค‘์˜ ์ €๋ฒˆ์‹œ๊ฐ„์— ์†Œ๊ฐœ๋“œ๋ฆฐ Databinding์— ์ด์–ด์„œ ์ด๋ฒˆ์—”

velog.io

[Android] LiveData VS StateFlow, ์™œ StateFlow๋ฅผ ์จ์•ผ ํ• ๊นŒ?

 

[Android] LiveData VS StateFlow, ์™œ StateFlow ๋ฅผ ์จ์•ผํ• ๊นŒ?

LiveData ๋Š” Lifecycle ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ค‘ ํ•˜๋‚˜๋กœ, ์•ˆ๋“œ๋กœ์ด๋“œ ๊ณตํ†ต์˜ ๋ผ์ดํ”„์‚ฌ์ดํด๊ณผ ๊ด€๋ จ๋œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด ์ฃผ๋ฉด์„œ ์•ฑ ๊ฐœ๋ฐœ์‹œ ๋ณด๋‹ค ๋” ์œ ์ง€๋ณด์ˆ˜ํ•˜๊ธฐ ์‰ฝ๊ฒŒ, ํ…Œ์ŠคํŠธํ•˜๊ธฐ ์‰ฝ๊ฒŒ ๋งŒ๋“ค์–ด์ฃผ๋Š” ๋ผ์ด

readystory.tistory.com

 

์ •๋ฆฌ

mvvm์„ ๋‹ค์‹œ ์ •๋ฆฌํ•ด ๋ณด๋ฉด์„œ, ์‚ฌ์šฉํ•˜๋Š” ์ด์œ , ๊ตฌ์กฐ๋ณ„ ํŠน์ง•, view model์˜ ๋ฐ˜์‘ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ์œ„ํ•œ live data์™€ state flow๊นŒ์ง€ ๊ณต๋ถ€ํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.

state flow๋ฅผ ๊นŠ๊ฒŒ ๋“ค์–ด๊ฐ€๋ ค๋‹ˆ๊นŒ coroutine ๊ด€๋ จ ๊ฐœ๋…๋“ค์ด ๋“ฑ์žฅํ•˜๊ธฐ ์‹œ์ž‘ํ–ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๋‹ค์Œ ํฌ์ŠคํŒ… ์ฃผ์ œ๋Š” coroutine์ด๋‹ค.

728x90
๋ฐ˜์‘ํ˜•