728x90
반응형

Coroutine 14

[코루틴 (14)] Compose Navigation + 코루틴 취소/재시작 사례

지난 13편에서는 Jetpack Compose와 코루틴, Flow가 결합해 선언형 UI에서 비동기 처리를 매끄럽게 다루는 방법을 살펴보았습니다. 이번 글에서는 Compose Navigation 시나리오에서 화면 전환 중에 코루틴이 취소되고, 새 화면이 나타나면 코루틴이 재시작되는 사례를 구체적으로 소개하려 합니다.  핵심 키워드 • Compose Navigation • 코루틴 취소 & 재시작 • Navigation Graph • NavController • Lifecycle1. Compose Navigation과 화면 전환 1.1 개요 Compose Navigation은 Jetpack Compose에서 여러 화면(Screen)을 전환할 때 사용하는 라이브러리입니다. NavHost와 NavControll..

코딩 2025.02.18

[코루틴 (13)] Compose + 코루틴 + Flow 시너지

지난 12편에서는 LifecycleScope & 안드로이드 생명주기 대응을 다루며, UI 컴포넌트(Activity/Fragment)의 생명주기와 코루틴을 자연스럽게 연결해 메모리 누수를 예방하는 방법을 살펴보았습니다. 이번 글에서는 Jetpack Compose와 코루틴, 그리고 Flow를 결합해 선언형 UI에서 비동기 로직을 다루는 방식을 알아보겠습니다.  핵심 키워드 • Jetpack Compose • CoroutineScope in Compose • Flow & StateFlow 결합 • collectAsState • LaunchedEffect, rememberCoroutineScope1. 왜 Compose + 코루틴 + Flow인가? 1.1 선언형 UI와 비동기 상태 관리 Jetpack Compo..

코딩 2025.02.18

[코루틴 (12)] LifecycleScope & 안드로이드 생명주기 대응

지난 11편에서는 WorkManager + 코루틴 연동을 통해 백그라운드 작업을 안정적으로 처리하는 방법을 살펴보았습니다. 이번 글에서는 안드로이드 생명주기(Lifecycle)와 코루틴을 자연스럽게 결합하는 lifecycleScope, viewLifecycleOwner.lifecycleScope 등 다양한 스코프를 살펴보며, 메모리 누수를 예방하고 취소 시점을 자동으로 관리하는 방법을 알아보겠습니다.  핵심 키워드 • LifecycleScope • viewLifecycleOwner.lifecycleScope • launchWhenStarted / launchWhenCreated / launchWhenResumed • 메모리 누수(Leak) 방지 • 생명주기 안전한 코루틴1. 안드로이드 생명주기와 코루틴..

코딩 2025.01.30

[코루틴 (11)] WorkManager + 코루틴 연동

지난 10편에서는 코루틴 고급 주제 & 퍼포먼스 최적화를 다루며, CoroutineContext 커스터마이징과 Dispatcher 튜닝, DebugProbes 같은 고급 기법을 살펴보았습니다. 이번 글에서는 WorkManager와 코루틴을 결합하여, 안드로이드 백그라운드 작업을 효율적으로 스케줄링하고 실행하는 방법을 알아보겠습니다.  핵심 키워드 • WorkManager • CoroutineWorker • 백그라운드 작업 스케줄링 • 작업 취소 & 재시작 • CoroutineScope in WorkManager1. WorkManager 간단 복습 1.1 백그라운드 작업 스케줄링 WorkManager는 안드로이드에서 지속적이고 안정적인 백그라운드 작업을 예약(스케줄링)하기 위한 Jetpack 라이브러리입..

코딩 2025.01.29

[코루틴 (10)] 고급 주제 & 퍼포먼스 최적화

지난 9편에서는 코루틴 테스트 전략 & 디버깅을 살펴보며, runTest, TestDispatcher, Turbine, DebugProbes 등을 어떻게 활용할 수 있는지 알아보았습니다. 이제부터는 고급 주제와 퍼포먼스 최적화에 대해 조금 더 깊이 있게 다뤄보려고 합니다. 대규모 프로젝트나 성능 민감한 상황에서 코루틴을 효율적으로 운영하기 위한 팁들을 정리해 보았습니다.  핵심 키워드 • CoroutineContext 커스터마이징 • DebugProbes 심화 • 코루틴 퍼포먼스 모니터링 • Structured Concurrency 최적화 • 코루틴 오버헤드 & 튜닝1. CoroutineContext & Dispatcher 심화 1.1 CoroutineContext 구조 복습CoroutineContex..

코딩 2025.01.25

[코루틴 (9)] 코루틴 테스트 전략 & 디버깅

지난 8편에서는 코루틴 환경에서 발생할 수 있는 동시성 문제와 스레드 안전성을 다루며, Mutex, Semaphore 등을 활용하는 방법을 살펴보았습니다. 이번 글에서는 코루틴 테스트를 효과적으로 진행하기 위한 전략과, 디버깅을 용이하게 만들어주는 기법들을 소개하려고 합니다.  핵심 키워드 • 코루틴 테스트(Unit Test, Instrumented Test) • runTest, Dispatchers.Unconfined • Turbine (Flow Test) • 디버깅(Debugging) • DebugProbes, IDE 디버거1. 왜 코루틴 테스트가 어려울까? 코루틴은 비동기적으로 동작하기 때문에, 테스트 시점을 어떻게 맞출지 고민이 필요합니다. 예를 들어, • 실행이 끝나기 전에 테스트가 종료되거나..

코딩 2025.01.22

[코루틴 (8)] 동시성 문제와 스레드 안전성(Mutex, Semaphore)

지난 7편에서는 안드로이드 실무에서 Retrofit, Room, ViewModel을 코루틴과 결합하는 방법을 살펴보았습니다. 이번 글에서는 동시성(Concurrency) 문제와 스레드 안전성에 초점을 맞추어, 코루틴 환경에서 발생할 수 있는 Race Condition과 이를 방지하기 위한 Mutex, Semaphore 등의 기법을 소개하려고 합니다.  핵심 키워드 • 동시성 문제(Concurrency Issues) • Race Condition • 스레드 안전성(Thread-safety) • Mutex, Semaphore • Shared Mutable State1. 왜 동시성 문제가 발생하는가? 1.1 Shared Mutable State 코루틴은 “가벼운 스레드”처럼 동작하지만, 실제로는 여러 스레드..

코딩 2025.01.20

[코루틴 (7)] 안드로이드 실무 적용: Retrofit, Room, ViewModel

지난 6편에서는 Kotlin Flow와 StateFlow, SharedFlow 같은 확장 개념을 살펴보면서, 비동기 스트림을 효율적으로 관리하는 방법을 알아보았습니다. 이번 글에서는 안드로이드 실무에서 가장 자주 사용되는 라이브러리인 Retrofit, Room, 그리고 ViewModel과 코루틴을 어떻게 결합할 수 있는지 살펴보겠습니다.  핵심 키워드 • Retrofit + Coroutines • Room + Coroutines • ViewModelScope • MVVM 아키텍처 • 예외 처리 & 상태 관리1. Retrofit과의 결합 1.1 Retrofit 코루틴 지원Retrofit은 코루틴을 공식적으로 지원해, Call 객체 대신 suspend 함수로 네트워크를 호출할 수 있습니다. • Gradle..

코딩 2025.01.19

[코루틴 (6)] Flow 심화: Flow, StateFlow, SharedFlow

지난 5편에서 코루틴 채널(Channel)과 select를 활용해 코루틴 간에 데이터를 주고받고, 여러 이벤트 중 먼저 도착한 것을 처리하는 방법을 알아보았습니다. 이번 글에서는 코틀린 Flow의 동작 원리와 고급 활용법을 살펴보고, 특히 StateFlow와 SharedFlow 같은 확장된 개념에 주목해 보려 합니다. 핵심 키워드 • Kotlin Flow • Cold Stream vs Hot Stream • Flow 연산자(Operators) • StateFlow, SharedFlow • RxJava와의 비교1. Kotlin Flow 개요 1.1 Cold Stream의 개념Kotlin Flow는 콜드 스트림(Cold Stream)으로, 구독(collect)하는 시점에 데이터를 생산하기 시작하는 특성을 ..

코딩 2025.01.19

[코루틴 (5)] 코루틴 채널(Channel)과 select

지난 4편에서 코루틴 예외 처리와 취소(Cancellation)에 대해 살펴보았습니다. 이번 글에서는 채널(Channel)이라는 개념을 중심으로, 코루틴 간 메시지를 주고받는 방식과 여러 연산을 동시에 처리하기 위한 select 문법을 살펴보려고 합니다.  핵심 키워드 • Channel • Producer-Consumer • BufferedChannel • RendezvousChannel • select1. 채널(Channel)이란? 1.1 코루틴 간의 통신 도구코루틴 채널(Channel)은 여러 코루틴이 데이터를 주고받는 파이프라인을 구성할 수 있게 해주는 도구입니다. 간단히 말해, “코루틴 버전의 큐(Queue)”라고 볼 수 있습니다. • 하나의 코루틴이 채널에 send()로 메시지를 넣으면, 다른..

코딩 2025.01.18
728x90
반응형