728x90
반응형
AsyncTask
- 손쉬운 비동기 프로그래밍
- 메모리 누수 등 문제
- 대체제로 코루틴 권장
루틴
- 메인루틴
- 서브루틴
- 코루틴
프로그램의 흐름
코루틴과 스레드
- 메모리 구조의 차이
- 할당 / 공유
- 수행 방식의 차이
- 선점형 / 비선점형
- 코루틴의 장점
- 메모리 / 오버헤드
- → 하나의 스레드 안에서 여러개의 코루틴을 사용할 수 있으므로 불필요하게 스레드를 여러개 생성할 필요가 없어진다.
- 코루틴의 사용
- suspend → 멈출 수 있는 함수라는 예약어 사용
코루틴의 구조
1. Coroutine Scope
2. Coroutine Context
- Dispatchers
- Default - cpu 연산
- IO - file, network io
- Main - ui thread
- Unconfined
- Job → 흐름제어 가능
- States
- mothods - cancel, join, start
3. Coroutine Builder
- launch - Job 객체 반환
- async - Deferred 객체 반환
- runBlocking - 사용X
- withContext - Dispatcher switch
코루틴 지연
- delay
- join
- await
코루틴 취소
- cancel
- cancelAndJoin
- withTimeout
- withTimeoutOrNull
정리
코루틴이란 스레드가 아니다 스레드와 비교하면 메모리를 덜 사용하고 오버헤드가 적은 경량의 비동기 프로그래밍을 수행할 수 있게 하는 모듈이다.
- CoroutineScope 사용한다.
- CPU 작업인지 IO 작업인지 판단하여 Default or IO 선택하여 사용한다.
- 코루틴 처리 후 값이 나와야 하는지 아닌지 판단하여 async 또는 launch 로 빌드를 한다.
728x90
반응형
'안드로이드' 카테고리의 다른 글
| [안드로이드] 안드로이드 HTTP 통신과 역사 (0) | 2022.08.07 |
|---|---|
| [안드로이드] 싱글턴 패턴 (Singleton Pattern) (0) | 2022.07.20 |