본문 바로가기
IT/안드로이드

Android Coroutine 의 Dispatcher 종류와 사용방법

by DOSGamer 2023. 6. 27.
반응형

Dispatcher 는 Coroutine 에서 사용하는 Thread 를 구분하는 용도 입니다

 

조심해야 할 것은 UI 를 그리는 Thread 에서 IO 또는 CPU 를 사용하는 명령을 같이 실행하면 APP Crash 발생합니다.

 

툭하면 겪는 상황이고 대부분 viewModelScope.launch(Dispatcher.IO) 설정해서 해결하고 있습니다

 

안드로이드에서는 3가지 Thread 밖에 없으니 아래 표만 기억하면 됩니다

 

viewModelScope.launch <== 이렇게 사용하면 Default 입니다

구분 Dispatcher.Default Dispatcher.IO Dispatcher.Main
용도 CPU 많이 사용시 Disk 많이 사용시 UI 그릴 때
예제 json 파싱, 데이터 정렬 local db 에 read, write 화면 그리는 전부 다
도스게임플레이어 적용 room db 사용시, retrofit 사용시 게임 롬 파일, 저장파일, 이미지 파일 사용시 toast 메시지나 jetpack compose UI 와 연계할 때

 

보통 화면 그리다가 ViewModel 에서 데이터 처리 할 때

viewModelScope.launch 사용하는 데 Dispatcher.Default 로 로직 처리 하겠다는 겁니다.

 

로직 처리하다 말고 UI 그리거나 Toast 메시지 표현하려면 

viewModelScope.launch(Dispatcher.Main) 으로 감쌓아야 crash 안납니다.

 

viewModel 에서 로직처리시 (Usecase 사용시) viewModelScope.launch 로 감싸면 됩니다.

 

대부분 Default 사용하고 가끔 IO 사용하면 됩니다.

메시지 뿌릴려면 Main 사용

 

반응형