반응형
CoroutineScope와 LifecycleScope 차이
Kotlin Coroutine을 안드로이드에서 활용할 때, 자주 접하는 개념이 CoroutineScope와 LifecycleScope입니다. 둘 다 코루틴의 실행 범위를 정의하는 역할을 하지만, 사용 목적과 관리 방식에서 중요한 차이가 있습니다.
1. CoroutineScope란?
CoroutineScope는 코루틴 실행의 기본 단위가 되는 스코프입니다. Scope가 살아있는 동안 코루틴이 유지되며, 스코프가 취소되면 해당 스코프에서 실행된 모든 코루틴이 함께 취소됩니다.
class MyRepository {
private val scope = CoroutineScope(Dispatchers.IO)
fun fetchData() {
scope.launch {
// 네트워크 요청 처리
}
}
}
- 범용적으로 사용할 수 있다.
- 수명 주기와 무관하다.
- 개발자가 직접 취소 관리(cancel)를 해줘야 한다.
2. LifecycleScope란?
LifecycleScope는 안드로이드 컴포넌트(Activity, Fragment 등)에 특화된 CoroutineScope입니다. 해당 컴포넌트의 수명 주기에 따라 자동으로 코루틴을 취소해줍니다.
class MyActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
lifecycleScope.launch {
// UI 관련 데이터 처리
}
}
}
- LifecycleOwner(Activity, Fragment)에 종속적이다.
- onDestroy 시점에 자동으로 코루틴이 취소된다.
- UI와 연계된 비동기 작업에 적합하다.
3. 차이점 비교
| 구분 | CoroutineScope | LifecycleScope |
|---|---|---|
| 용도 | 범용 코루틴 실행 | 안드로이드 UI 컴포넌트 전용 |
| 수명 주기 관리 | 개발자가 직접 취소해야 함 | Lifecycle에 맞춰 자동 관리 |
| 대표적인 활용 | Repository, UseCase | Activity, Fragment |
4. 언제 무엇을 써야 할까?
- CoroutineScope → 앱 전역, Repository, UseCase 등 UI와 무관한 비동기 처리
- LifecycleScope → Activity/Fragment 내부, UI 갱신과 직접 연결된 비동기 처리
정리: 안드로이드에서는 LifecycleScope를 활용하면 수명 주기 관리가 자동으로 되기 때문에 UI 코드가 훨씬 안전해집니다. 반대로, 앱 전역이나 비즈니스 로직에서는 CoroutineScope를 활용해 독립적인 코루틴을 실행하는 것이 적합합니다.
반응형
'개발일기' 카테고리의 다른 글
| Kotlin DSL과 Gradle 스크립트 활용법 (3) | 2025.08.26 |
|---|---|
| ViewModelScope의 특징과 활용법 (5) | 2025.08.25 |
| Kotlin Flow와 LiveData 비교 (6) | 2025.08.20 |
| StateFlow vs SharedFlow 차이와 활용법 (5) | 2025.08.19 |
| Kotlin Flow 실전 활용법 (7) | 2025.08.18 |