• 카테고리

    질문 & 답변
  • 세부 분야

    모바일 앱 개발

  • 해결 여부

    미해결

코루틴에서의 setValue? postValue?

20.11.13 02:13 작성 조회수 179

0

기존 자바에서는 레트로핏을 사용하여 call객체를 onResponse메소드를 통해 받고 비동기처리된 데이터를 담아주기 위해 postValue를 사용했는데요

코루틴에서는 itemLiveData.value(setValue??)를 통해 값을 받아주셨습니다!

실제로 앱도 죽지않았구요 

제가 궁금한점은 그렇다면 코루틴도 분명 비동기 처리를 위해 제시된 방법인데 왜 포그라운드에서 사용하는 setValue를 사용하나요? 코루틴이 비동기처리되지만 특별한 무언가가 있어서일까요..? 

아 그리구 코루틴으로 비동기처리를 하게되면 메인스레드 외에 자동적으로 다른 스레드가 만들어져서 거기서 작업을 하게되나요?!

답변 2

·

답변을 작성해보세요.

0

아하! 답변 감사합니다!

0

강의에서 자세히 설명을 못 했는데요.
viewModelScope.launch() 로 시작한 스코프는 메인 스레드입니다. 도중에 withContext() 를 사용하여 코루틴 스코프 내에서 몇 번이라도 백그라운드 스레드와 메인 스레드 전환이 가능하고요.

레트로핏은 내부적으로 Dispatcher.IO 로 동작하고 있어서 별도의 withContext는 필요가 없습니다.
따라서 값을 받는 부분은 메인 스레드이므로 라이브데이터의 value로 받을 수 있어요.

코루틴은 스레드를 양보하는 개념입니다.