Android

[Android] MVVM + Coroutine + Retrofit

dev_zoe 2021. 11. 3. 16:48
반응형

MVVM + Retrofit + Repository의 전체적 구조

MVVM은 뷰 관련 로직이 ViewModel에 종속되는 패턴이다. 즉 UI 관련 데이터가 ViewModel에 있고 뷰는 이 뷰모델을 관찰(observing)하면서 변화하는 내용들을 업데이트한다.

ViewModel은 뷰에 사용되는 데이터를 요청하면, Repository는 Room (내부 Database) 혹은 Retrofit이 네트워크를 통해 통신한 내용을 ViewModel에 전달해주는 방식이다.

 

그래서 이 내용을 Retrofit을 통해 API 통신하는 부분에 적용하면 다음 절차로 진행된다!

1. 레트로핏 인터페이스를 생성하고, API를 통신한 결과를 response 모델로 반환하도록 해둔다.

2. 해당 인터페이스를 통해 데이터를 가져오는 부분은 Repositorty에 위임한다.

3. ViewModel과 Repository를 연결한다.

여기서부터 Coroutine에 관해서 짚고 넘어가자.


Android의 Kotlin Coroutine

코틀린 코루틴은 무엇인가?

Android의 비동기 프로그래밍을 간소화된 코드로 실행할 수 있도록 도와주는 동시 실행 설계 패턴이다.

코루틴은 Co + Routines을 합친 말로 여기서 Routine은 함수를 의미한다.

함수끼리 서로 협동하면서 비동기적인 프로그래밍이 가능하도록 돕는 프로그래밍이다.

 

주로 백그라운드에서 작업해야하는 태스크가 있을때 이를 비동기적으로 백그라운드에서 처리할 수 있도록 도와준다.

백그라운드에서 작업해야하는 태스크를 예를들자면 대표적으로 네트워킹이나 데이터베이스로부터 데이터를 얻어오는 것들이 있다.

 

함수에 붙는 suspend는 무엇인가?

코루틴은 메인 스레드에서 작업하다가 suspend가 붙은 함수를 만나면, 메인스레드의 다른 코드들을 실행하면서 해당 suspend 함수를 동시에 실행한다. suspend(중지하다) 라는 말이 붙은 이유는 해당 함수를 만나면 잠시 멈추고 해당 함수를 실행하기 때문에 언제든지 중지하거나 다시 실행(resume)할 수 있기때문에 붙은것이다. 따라서 코루틴 내의 함수에는 suspend가 붙어야한다.

 

 

 

Reference

https://developer.android.com/jetpack/guide?hl=ko 

 

앱 아키텍처 가이드  |  Android 개발자  |  Android Developers

앱 아키텍처 가이드 이 가이드에는 고품질의 강력한 앱을 빌드하기 위한 권장사항 및 권장 아키텍처가 포함되어 있습니다. 이 페이지는 Android 프레임워크 기본을 잘 아는 사용자를 대상으로 합

developer.android.com

https://developer.android.com/kotlin/coroutines?hl=ko 

 

Android의 Kotlin 코루틴  |  Android 개발자  |  Android Developers

Android의 Kotlin 코루틴 코루틴은 비동기적으로 실행되는 코드를 간소화하기 위해 Android에서 사용할 수 있는 동시 실행 설계 패턴입니다. 코루틴은 Kotlin 버전 1.3에 추가되었으며 다른 언어에서 확

developer.android.com

https://wooooooak.github.io/kotlin/2019/08/25/%EC%BD%94%ED%8B%80%EB%A6%B0-%EC%BD%94%EB%A3%A8%ED%8B%B4-%EA%B0%9C%EB%85%90-%EC%9D%B5%ED%9E%88%EA%B8%B0/

 

코틀린 코루틴(coroutine) 개념 익히기 · 쾌락코딩

코틀린 코루틴(coroutine) 개념 익히기 25 Aug 2019 | coroutine study 앞서 코루틴을 이해하기 위한 두 번의 발악이 있었지만, 이번에는 더 원론적인 코루틴에 대해서 알아보려 한다. 코루틴의 개념이 정확

wooooooak.github.io

 

반응형