패스잇
모바일 개발 · 심화

코루틴의 Dispatchers 종류와 각 Dispatcher의 역할에 대해 설명하고, CoroutineScope를 올바르게 사용하여 메모리 누수를 방지하고 코루틴 생명주기를 관리하는 방법에 대해 구체적인 예시와 함께 설명해 주세요.

힌트 · `Main`, `IO`, `Default` Dispatcher의 용도를 설명하고, `viewModelScope`, `lifecycleScope` 등의 사용과 커스텀 스코프 생성 시 주의점을 언급합니다.

DispatchersCoroutineScopeJoblifecycle메모리 누수

모범답안

코루틴 Dispatchers는 코루틴이 실행될 스레드를 결정합니다. Dispatchers.Main은 UI 스레드에서 동작하며 UI 업데이트에 사용됩니다. Dispatchers.IO는 네트워크나 디스크 I/O에 최적화된 스레드 풀을 사용하고, Dispatchers.Default는 CPU 집약적인 작업에 적합합니다.

CoroutineScope는 코루틴의 생명주기를 관리합니다. viewModelScope나 lifecycleScope를 사용하면 액티비티나 뷰모델의 생명주기에 맞춰 코루틴이 자동으로 취소되어 메모리 누수를 방지할 수 있습니다.

예를 들어, 뷰모델에서 데이터를 가져오는 코루틴을 실행할 때 viewModelScope.launch { fetchData() }처럼 사용하면 뷰모델이 소멸될 때 코루틴도 함께 취소됩니다. 커스텀 스코프를 만들 때는 Job을 사용하여 코루틴의 생명주기를 명확하게 관리하고, 더 이상 필요하지 않을 때 cancel() 메서드를 호출해야 합니다.

읽었다면, 이제 직접 답해볼 차례예요

패스잇 앱에서 이 질문에 말로 답하면 AI가 꼬리질문까지 이어가며 1:1 코칭합니다.

함께 보는 Android / Kotlin 면접 질문

← Android / Kotlin 면접 질문 전체 보기