hugDog
Android DevLog
hugDog
์ „์ฒด ๋ฐฉ๋ฌธ์ž
์˜ค๋Š˜
์–ด์ œ
  • ๐Ÿ™Œ Hello? (162)
    • ๐Ÿงฉ์•ˆ๋“œ๋กœ์ด๋“œ (12)
      • ๊ฐœ๋… ์ •๋ฆฌ (5)
      • ๋ฒ„๊ทธ ํ•ด๊ฒฐ (4)
      • ๊ธฐํƒ€ (3)
    • ๐Ÿ”์•Œ๊ณ ๋ฆฌ์ฆ˜ (54)
      • ๊ฐœ๋… (0)
      • ๋ฐฑ์ค€ (48)
      • ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค (6)
    • ๐Ÿ“„๊ฐœ๋ฐœ ์ผ์ง€ (0)
      • FINPO (0)
    • ๐Ÿ”คํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด (71)
      • C++ ์ •๋ฆฌ (49)
      • C++๊ธฐ์ดˆํ”Œ๋Ÿฌ์Šค ์—ฐ์Šต๋ฌธ์ œ (20)
      • Kotlin (2)
    • โญProject (1)
    • ๐ŸšดTIL (13)
      • Clean Code (13)
    • ๐Ÿšฉ๊ธฐํƒ€ (9)
      • ๋ชฉํ‘œ (6)
      • ์ผ์ƒ (3)
      • ๋ฌธ์„œ (0)

์ธ๊ธฐ ๊ธ€

์ตœ๊ทผ ๋Œ“๊ธ€

์ตœ๊ทผ ๊ธ€

ํ‹ฐ์Šคํ† ๋ฆฌ

hELLO ยท Designed By ์ •์ƒ์šฐ.
hugDog

Android DevLog

[Android/Kotlin] MVVM ํŒจํ„ด, AAC
๐Ÿงฉ์•ˆ๋“œ๋กœ์ด๋“œ/๊ฐœ๋… ์ •๋ฆฌ

[Android/Kotlin] MVVM ํŒจํ„ด, AAC

2022. 2. 15. 23:55
728x90

MVVM ํŒจํ„ด ์ •์˜

Model, View, ViewModel์˜ ์•ฝ์ž

 

Model

  • MVC์™€ ๋™์ผ
  • ์ฃผ๋กœ DB ์‚ฌ์šฉ ๋˜๋Š” API ํ˜ธ์ถœ์„ ์˜๋ฏธ

 

View

  • Activity, Fragment (xml ํŒŒ์ผ + Activity, Fragment ํŒŒ์ผ)
  • ์‚ฌ์šฉ์ž์˜ ์ž…๋ ฅ์„ ๋ฐ›์Œ
  • ViewModel์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๊ด€์ฐฐํ•˜์—ฌ UI ๊ฐฑ์‹ 
  • ViewModel์˜ ๋ ˆํผ๋Ÿฐ์Šค๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์Œ
  • UI ๋ณ€๊ฒฝ๊ณผ ๊ด€๋ จ๋œ ์‚ฌํ•ญ๋งŒ ์ฒ˜๋ฆฌ (Model์„ ์•Œ๋ฉด ์•ˆ ๋จ)

 

ViewModel

  • View๋ฅผ ํ†ตํ•ด ์‚ฌ์šฉ์ž ์ž…๋ ฅ์„ ๋ฐ›์œผ๋ฉด Model์— ์•Œ๋งž์€ ๋ฐ์ดํ„ฐ ์š”์ฒญ
  • Model์—์„œ ๋ฐ›์•„์˜จ ๋ฐ์ดํ„ฐ๋ฅผ ์•Œ๋งž๊ฒŒ ๊ฐ€๊ณตํ•˜์—ฌ ๊ฐ’ ๊ฐฑ์‹ 
  • View, Context์˜ ์กด์žฌ๋ฅผ ์•Œ๋ฉด ์•ˆ ๋จ

 

MVVM ํŒจํ„ด์—์„œ View์™€ Model ์‚ฌ์ด์˜ ์˜์กด์„ฑ์ด ์กด์žฌํ•˜๋ฉด ์•ˆ ๋จ (View๋Š” ViewModel๋งŒ ๊ด€์ฐฐํ•˜๋Š” ์—ญํ• )

 

 

MVVM ํŒจํ„ด ์žฅ๋‹จ์ 

์žฅ์ 

  • View์— ๋Œ€ํ•œ ์˜์กด์„ฑ์ด ์—†์œผ๋ฏ€๋กœ ์œ ๋‹› ํ…Œ์ŠคํŠธ ๊ฐ„ํŽธ
  • ViewModel์ด ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฏ€๋กœ Memory Leak ๋ฐœ์ƒ X (Activity, Fragment ๋ผ์ดํ”„์‚ฌ์ดํด์— ์˜์กดํ•˜์ง€ ์•Š์Œ = View๊ฐ€ Model์— ์ ‘๊ทผํ•˜์ง€ ์•Š์Œ)
  • ์—ญํ•  ๋ถ„๋ฆฌ๊ฐ€ ์ž˜๋˜์–ด ์žˆ์Œ(๋ชจ๋“ˆํ™”)

 

๋‹จ์ 

  • ๊ตฌํ˜„์ด ์–ด๋ ค์›€
  • XML ์ˆ˜์ •์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ ViewModel๊ณผ XML์˜ ๋กœ์ง์„ ํŒŒ์•…ํ•ด์•ผ ํ•จ (์œ ์ง€๋ณด์ˆ˜๊ฐ€ ๊นŒ๋‹ค๋กญ๋‹ค)

 

AAC

AAC(Android Architecture Components)๋Š” ํ…Œ์ŠคํŠธ์™€ ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ์‰ฌ์šด ์•ฑ์„ ๋””์ž์ธํ•  ์ˆ˜ ์žˆ๋„๋ก ๋•๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ๋ชจ์Œ

์ถœ์ฒ˜ : https://www.youtube.com/watch?v=BofWWZE1wts

 

ViewModel

AAC์˜ ViewModel๊ณผ MVVM์˜ ViewModel์€ ์„œ๋กœ ๋‹ค๋ฅด๋‹ค.

ํ•˜์ง€๋งŒ MVVM์˜ ViewModel์„ ๋งŒ๋“ค ๋•Œ, AAC์˜ ViewModel์„ ์‚ฌ์šฉํ•˜์—ฌ ๋งŒ๋“ค๋ฉด ๋” ํŽธ๋ฆฌํ•˜๋‹ค.

์ฐธ๊ณ 1 ์ฐธ๊ณ 2

 

LiveData

๊ด€์ฐฐ ๊ฐ€๋Šฅํ•œ ๋ฐ์ดํ„ฐ ํ™€๋” ํด๋ž˜์Šค

LifeCycle์„ ์ธ์‹ (Activity, Fragment ๋“ฑ ๋‹ค๋ฅธ ์•ฑ ๊ตฌ์„ฑ์š”์†Œ์˜ LifeCycle ๊ณ ๋ ค)

LifeCycle ์ธ์‹์„ ํ†ตํ•ด LiveData๋Š” LifeCycle์ด ํ™œ๋™ ์ƒํƒœ์ธ ์•ฑ ๊ตฌ์„ฑ์š”์†Œ Observer๋งŒ ์—…๋ฐ์ดํŠธ

 

Repository

Model์„ Repository -> DataSource๋กœ ์ข€ ๋” ์„ธ๋ถ„ํ™”ํ•˜์—ฌ Model์—์„œ ์ง์ ‘ DataSource๋ฅผ ๋‹ค๋ฃจ๊ธฐ๋ณด๋‹ค ์—ฐ๋™ํ•˜๋Š” ๋ถ€๋ถ„์„ ๋”ฐ๋กœ ๋–ผ์–ด ๋†“์€ ๊ฒƒ (์ถœ์ฒ˜)

ViewModel์€ DB๋‚˜ ์„œ๋ฒ„์— ์ง์ ‘ ์ ‘๊ทผํ•˜์ง€ ์•Š๊ณ , Repository์— ์ ‘๊ทผํ•˜๋Š” ๊ฒƒ์œผ๋กœ ์•ฑ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๊ด€๋ฆฌํ•œ๋‹ค.

 

 

๋งˆ๋ฌด๋ฆฌ

MVVM ํŒจํ„ด, AAC์˜ ๊ธฐ๋ณธ์ ์ธ ๊ฐœ๋…์„ ์•Œ์•„๋ณด์•˜๋‹ค.

์ด์ œ ์‹ค์Šต์œผ๋กœ MVVM + AAC๋ฅผ ํ™œ์šฉํ•œ ์•ฑ์„ ๋งŒ๋“ค์–ด๋ณด๋Š” ๊ฒŒ ๋‹ค์Œ ๊ณผ์ œ์ธ ๋“ฏ ์‹ถ๋‹ค.

ํ˜„์žฌ ์ง„ํ–‰ ์ค‘์ธ ํ”„๋กœ์ ํŠธ์—๋„ MVVM ํŒจํ„ด์„ ์ ์šฉํ–ˆ๋Š”๋ฐ, ๊ฐœ๋… ์ •๋ฆฌํ•˜๋‹ค ๋ณด๋‹ˆ ์ž˜๋ชป ์ ์šฉํ•œ ๋ถ€๋ถ„์ด ๊ฝค ์žˆ๋Š” ๋“ฏํ•˜๋‹ค..ใ…Žใ…Ž

 

 

 

 

 

 

์ฐธ๊ณ  ์ž๋ฃŒ

https://academy.realm.io/kr/posts/eric-maxwell-mvc-mvp-and-mvvm-on-android/

https://developer.android.com/topic/libraries/architecture?hl=ko 

https://velog.io/@hwi_chance/Android-%EC%95%88%EB%93%9C%EB%A1%9C%EC%9D%B4%EB%93%9C-AAC

https://dmsg.tistory.com/entry/Android-%EB%94%94%EC%9E%90%EC%9D%B8%ED%8C%A8%ED%84%B4%EB%B3%84-%EC%9E%A5%EB%8B%A8%EC%A0%90-%EB%B9%84%EA%B5%90-MVP-MVVM-SVG

https://haero.tistory.com/14

https://velog.io/@haero_kim/Android-%EA%B9%94%EC%8C%88%ED%95%98%EA%B2%8C-MVVM-%ED%8C%A8%ED%84%B4%EA%B3%BC-AAC-%EC%95%8C%EC%95%84%EB%B3%B4%EA%B8%B0

https://blog.yena.io/studynote/2019/03/16/Android-MVVM-AAC-1.html

https://wonsohana.wordpress.com/2019/05/14/android-mvvm-%EC%9D%84-%EC%A0%95%EB%A6%AC%ED%95%B4%EB%B3%B4%EC%9E%90/

https://dunchi.tistory.com/96

 

 

728x90
์ €์ž‘์žํ‘œ์‹œ ๋น„์˜๋ฆฌ (์ƒˆ์ฐฝ์—ด๋ฆผ)
    '๐Ÿงฉ์•ˆ๋“œ๋กœ์ด๋“œ/๊ฐœ๋… ์ •๋ฆฌ' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
    • [Android/Kotlin] MVP ํŒจํ„ด
    • [Android/Kotlin] MVC ํŒจํ„ด
    • [Android] ๋””์ž์ธ ํŒจํ„ด(์ฐธ๊ณ  ๋งํฌ ๋ชจ์Œ)
    • Android Context(์ปจํ…์ŠคํŠธ)
    hugDog
    hugDog
    ์•ˆ๋“œ๋กœ์ด๋“œ ๊ณต๋ถ€ ์ค‘์ธ ํ•™์ƒ์ž…๋‹ˆ๋‹ค!

    ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”