💡 코루틴 스코프 ?
- 코루틴은 코루틴 스코프 안에서만 동작한다.
GlobalScope
- application이 시작하고 종료될 때까지 계속 유지된다.
- 싱글톤으로 따로 생성하지 않아도 어디에서든 바로 접근 가능하다.
- 특정 activity 나 service에서 잠깐 사용하는 것이라면 사용을 안한다.
LifecycleScope
- 해당 라이프사이클 소유자의 생명주기와 연계되어있다.
- destroyed될 때 자동으로 스코프가 취소된다.
ViewModelScope
- 뷰모델에 연결된 스코프로 뷰모델이 지워지면 취소된다.
runBlocking
- runBlocking에 넘겨준 코루틴 로직을 모두 수행 할 때까지 기다린다.
💡 코루틴 dispatcher ?
- Dispatchers.IO
- 코루틴은 공유된 스레드 풀로에 있는 백스라운드 스레드에서 작동합니다.
- 로컬 DB와 작업할 때, 네트워크 작업 또는 파일과 관련된 작업을 할 때 사용할 것입니다.
- Dispatchers.Main
- 코루틴이 메인스레드에서 실행됩니다.
- ui 관련 함수, suspending 함수, LiveData에서 수정사항을 가져오는 함수 등 작고, 가벼운 작업들만 실행시킬 것입니다.
- 권장사항은(best practice) 코루틴을 메인스레이드에 시작하고 백그라운드 스레드로 변경하는 것입니다.
- Dispatchers.Default
- 많은 리스트를 정렬하는 작업같이 CPU 부하가(intensive) 많은 작업들을 할 때 사용할 것입니다.
'안드로이드' 카테고리의 다른 글
| [안드로이드] Hilt - 2 (@Binds vs @Provides) (0) | 2022.10.14 |
|---|---|
| [안드로이드] Hilt - 1 (0) | 2022.10.13 |
| [코틀린] Paging3 (0) | 2022.10.10 |
| [안드로이드] Activity vs Fragment 차이 (0) | 2022.10.09 |
| [안드로이드] ViewBinding 사용시 주의점 (0) | 2022.10.07 |