코루틴에서의 setValue? postValue?
306
작성한 질문수 4
기존 자바에서는 레트로핏을 사용하여 call객체를 onResponse메소드를 통해 받고 비동기처리된 데이터를 담아주기 위해 postValue를 사용했는데요
코루틴에서는 itemLiveData.value(setValue??)를 통해 값을 받아주셨습니다!
실제로 앱도 죽지않았구요
제가 궁금한점은 그렇다면 코루틴도 분명 비동기 처리를 위해 제시된 방법인데 왜 포그라운드에서 사용하는 setValue를 사용하나요? 코루틴이 비동기처리되지만 특별한 무언가가 있어서일까요..?
아 그리구 코루틴으로 비동기처리를 하게되면 메인스레드 외에 자동적으로 다른 스레드가 만들어져서 거기서 작업을 하게되나요?!
답변 2
0
강의에서 자세히 설명을 못 했는데요.
viewModelScope.launch() 로 시작한 스코프는 메인 스레드입니다. 도중에 withContext() 를 사용하여 코루틴 스코프 내에서 몇 번이라도 백그라운드 스레드와 메인 스레드 전환이 가능하고요.
레트로핏은 내부적으로 Dispatcher.IO 로 동작하고 있어서 별도의 withContext는 필요가 없습니다.
따라서 값을 받는 부분은 메인 스레드이므로 라이브데이터의 value로 받을 수 있어요.
코루틴은 스레드를 양보하는 개념입니다.
Room_DB코틀린 버전에서 에러 나시는 분들
1
294
1
Room db kotlin 관련질문
0
282
2
Room db kotlin 강의중에서
0
420
3
공적 마스크 조회 앱 자바 버전 질문입니다.
0
388
1
RecyclerView Adapter에서 ViewModel 접근에 관하여 질문 드립니다.
0
1401
1
네비게이션 그래프
0
229
1
Repository에서 Error처리를 하고 싶은데 잘 모르겠습니다.
0
755
1
getAll을 직접부를 때 무한무프 질문있습니다.
0
209
1
라이브 데이터 + 데이터 바인딩 질문드립니다!
0
219
1
/?m=5000 에 대해서 질문드립니다.
0
228
2
@Inject lateinit var repository: MyRepository
0
285
1
이번편 강의의 3:52 부분까지 공부했는데 에러가 걸립니다
0
412
2
let이나 apply는 주로 어떤 상황에 사용하나요?
0
262
2
Call<StroeInfo> 를 StoreInfo로 바꾸는 부분 질문
0
240
1
Room DB 파일을 확인하고 싶어요.
0
2338
1
SavedStateHandle 앱 종료 시킨 후, 다시 열면 0으로 초기화 되어있습니다ㅠ
0
475
1
안녕하세요.
0
442
4
NullPointerException이 뜨는데 이것도 마스크 재고 API 중지 때문인가요
0
287
1
viewModel 질문 있습니다.
0
390
1
suspend
0
241
2
retrofit2에서 코루틴을 이용하는 이유가 무엇인가요?
1
272
2
UpdateItems 생성
0
147
1
질문있습니다.
1
234
3
질문있습니다!
0
268
1





