일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- ㅋㅁ
- builderPattern
- 빌터패턴
- 팩토리 메소드
- 싱글톤
- Functional Programming
- Kotlin
- PrototypePattern
- factory method
- 추상팩토리패턴
- 디자인패턴 #
- r
- 추상 팩토리
- 함수형프로그래밍
- Singleton
- 프로토타입 패턴
- 디자인패턴
- Observer Pattern
- Design Pattern
- a
- designPattern
- 코틀린
- ㅓ
- Abstract Factory
- El
- F
- 옵저버 패턴
- Today
- Total
목록Coroutine/coroutineBasic (5)
오늘도 더 나은 코드를 작성하였습니까?
context에 대한 지식을 children 및 jobs과 함께 가지고 있어야 한다. 애플리케이션에 수명 주기가 있는 객체가 있지만 해당 객체는 코루틴이 아니라고 가정해보자 예를 들어, 우리는 Android 애플리케이션을 작성하고 데이터를 가져오고 업데이트하고, 애니메이션을 수행하는 등의 비동기 작업을 수행하기 위해 Android Activity의 context에서 다양한 코루틴을 시작합니다. 모든 코루틴은 memory leak를 방지하기 위해 Activity이 파괴될 때 취소되어야 한다. 물론, context와 job을 수동으로 설정하여 Acitvity의 생명주기에 해당 코루틴을 연결할 수 있지만 kotlinx.coroutines는 다음을 캡슐화하는 추상화를 제공합니다. coroutine Builder..
코루틴은 항상 Kotlin 표준 라이브러리에 정의된 CoroutineContext type로 표시되는 context에서 실행됩니다. coroutne context - 다양한 요소의 집합 - 주요 요소는 이전에 본 코루틴의 job / dispatcher Dispatchers and threads 코루틴 context에는 해당 코루틴이 실행에 사용하는 스레드를 결정하는 코루틴 디스패처(CoroutineDispatcher 참조)가 포함됩니다 코루틴 디스패처는 코루틴 실행을 특정 스레드로 제한하거나, 스레드 풀에 디스패치하거나, 제한 없이(unconfined) 실행되도록 할 수 있습니다. launch{ ... } 및 async {...} 와 같은 모든 코루틴 빌더는 새 코루틴 및 기타 컨텍스트 요소에 대한 디스..
Sequential by default (기분 순차적 구성) 두개의 유용한 작업을 하는 suspend 함수가 있다고 가정하자. suspend fun doSomethingUsefulOne(): Int { delay(1000L) // pretend we are doing something useful here return 13 } suspend fun doSomethingUsefulTwo(): Int { delay(1000L) // pretend we are doing something useful here, too return 29 } 위 2개의 함수의 결과 값을 합친 값을 필요로한다면 어떻게 해야되나? 보통 코드와 마찬가지로 코루틴의 코드는 기본적으로 순차적이기 때문에 일반 순차 호출을 사용합니다. 다음..
Cancelling coroutine execution (코루틴 실행 취소) 오랜시간 실행되는 애플리케이션에서는 백그라운드 코루틴에 대한 세밀한 제어가 필요하다. 예를 들어 사용자가 코루틴을 시작한 페이지를 닫았을 수 있으며 이제 그 결과가 더 이상 필요하지 않다면, job을 취소할수 있어야 한다. launch{ }는 실행 중인 코루틴을 취소하는 데 사용할 수 있는 job을 반환한다. val job = launch { repeat(1000) { i -> println("job: I'm sleeping $i ...") delay(500L) } } delay(1300L) // delay a bit println("main: I'm tired of waiting!") job.cancel() // cancels..