코루틴 4

[Kotlin Coroutines][init] 2. 시퀀스 빌더

다른 언어에서는 코루틴을 어떻게 사용할까?? 🤔 파이썬이나 자바스크립트를 보면 아래 2가지 같은 제한된 형태의 코루틴이 있다고 한다. 비동기 함수 (async/await와 같은 호출 방식) 제너레이터(값을 순차적으로 반환) 코틀린에서는 제너레이터 대신 시퀀스를 생성할 수 있는 시퀀스 빌더라는 것을 대신 제공한다. (Flow 빌더도 있으나 내용이 많아 추후 포스팅 예정) 시퀀스 빌더 - 시퀀스는 List, Set 같은 컬렉션과 비슷한 개념이지만 필요할 때마다 값을 하나씩 계산하는 지연 처리를 한다. - [시퀀스의 특징] 요구되는 연산을 최소한으로 수행 무한정이 될 수 있음 메모리 사용이 효율적 (이펙티브 코틀린에 Item49 '하나 이상의 처리 단계를 가진 경우 시퀀스를 사용라라'고 있으니 참고) - [시..

Android/Coroutine 2024.02.18

[코루틴 기초] Job

Job : '코루틴의 핸들'로 실행 중인 취소가능한 작업을 표현 - 코루틴을 고유하게 식별하고 수명 주기를 관리한다. - '코루틴 빌더' 실행 시 생성된다. => launch 또는 async로 만드는 각 코루틴은 Job 인스턴스를 반환 - 백그라운드 작업 - Job을 CoroutineScope에 전달하여 코루틴의 수명 주기를 추가로 관리 가능 ex) class ExampleClass { ... fun exampleMethod() { // Handle to the coroutine, you can control its lifecycle val job = scope.launch { // New coroutine } if (...) { // Cancel the coroutine started above, th..

Android/Coroutine 2022.07.08

Coroutine 예제로 개념잡기

안드로이드 공식문서 예제 따라하는 포스팅입니다. 1. 백그라운드 스레드에서 실행 예제 - '네트워크 요청' 작업은 작업이 지연되거나 부하되는 경우 문제가 되므로 이 작업을 코루틴에서 백그라운드 스레드에서 이 작업을 실행해보고자 한다. ▽ 네트워크 요청을 기본 스레드에서 했을 때 위험상황 더보기 기본 스레드에서 네트워크 요청을 보내면 응답을 받을 때까지 스레드가 대기하거나 차단됩니다. 스레드가 차단되는 경우 이로 인해 OS는 onDraw()를 호출할 수 없으므로 앱이 정지되고 애플리케이션 응답 없음(ANR) 대화상자가 표시될 수 있습니다 위와 같은 문제를 가진 코드가 아래와 같으며 문제해결을 위해 코루틴을 적용한다. ▽ 1) 네트워크 요청 작업 (@Repository클래스) sealed class Resu..

Android/Coroutine 2022.07.08

Coroutine 기초

Coroutine 이란? : 비동기적으로 실행되는 코드를 간소화하기 위해 Android에서 사용할 수 있는 동시 실행 설계 패턴 - 코루틴 은 일시 중단 가능한 계산의 인스턴스 코드의 나머지 부분과 동시에 작동하는 코드 블록을 실행한다는 점에서 개념적으로 스레드와 유사합니다. - 그러나 특정 스레드에 바인딩되지 않습니다(스레드 단위와 관련없음!) 한 스레드에서 실행을 일시 중지하고 다른 스레드에서 다시 시작할 수 있고, 한 스레드 내에서 여러 코루틴이 실행되기도 한다. - 실행을 일시중단 했다가 나중에 중단 시점부터 다시 실행 재개할 수 있다. - 모든 코루틴은 범위(Scope) 내에서 실행해야 합니다. 필요성 - 스레드는 값비싼 리소스이고 스레드를 차단하는 것은 비효율적이고 종종 바람직하지 않기 때문에..

Android/Coroutine 2022.07.08