728x90
반응형

Android 공부 79

[XX캠퍼스] 17.Kotlin Coroutines & Flow ( 채널 기초 )

https://dalinaum.github.io/coroutines-example/17 채널 기초 채널 기초 예제 80: 채널 채널은 일종의 파이프입니다. 송신측에서 채널에 send로 데이터를 전달하고 수신 측에서 채널을 통해 receive 받습니다. (trySend와 tryReceive도 있습니다. 과거에는 null을 반환 dalinaum.github.io 채널 채널은 일종의 파이프입니다. 송신측에서 채널에 send로 데이터를 전달하고 수신 측에서 채널을 통해 receive 받습니다. (trySend와 tryReceive도 있습니다. 과거에는 null을 반환하는 offer와 poll가 있었습니다.) import kotlinx.coroutines.* import kotlinx.coroutines.chan..

[XX캠퍼스] 16.Kotlin Coroutines & Flow ( 런칭 )

https://dalinaum.github.io/coroutines-example/16 플로우 런칭 플로우 런칭 예제 78: 이벤트를 Flow로 처리하기 addEventListener 대신 플로우의 onEach를 사용할 수 있습니다. 이벤트마다 onEach가 대응하는 것입니다. import kotlinx.coroutines.* import kotlinx.coroutines.flow.* fun e dalinaum.github.io 이벤트를 Flow로 처리하기 addEventListener 대신 플로우의 onEach를 사용할 수 있습니다. 이벤트마다 onEach가 대응하는 것입니다. import kotlinx.coroutines.* import kotlinx.coroutines.flow.* fun event..

[XX캠퍼스] 15.Kotlin Coroutines & Flow ( 완료 처리하기 )

https://dalinaum.github.io/coroutines-example/15 플로우 완료처리하기 플로우 완료처리하기 예제 75: 명령형 finally 블록 완료를 처리하는 방법 중의 하나는 명령형의 방식으로 finally 블록을 이용하는 것입니다. import kotlinx.coroutines.* import kotlinx.coroutines.flow.* fun simple() dalinaum.github.io finally onCompletion - 문제 발생여부를 알수 있다. 명령형 finally 블록 완료를 처리하는 방법 중의 하나는 명령형의 방식으로 finally 블록을 이용하는 것입니다. import kotlinx.coroutines.* import kotlinx.coroutines...

[XX캠퍼스] 14.Kotlin Coroutines & Flow ( 예외처리하기 )

https://dalinaum.github.io/coroutines-example/14 플로우 예외처리하기 플로우 예외처리하기 예제 71: 수집기 측에서 예외처리하기 예외는 collect을 하는 수집기 측에서도 try-catch 식을 이용해 할 수 있습니다. import kotlinx.coroutines.* import kotlinx.coroutines.flow.* fun simple(): Fl dalinaum.github.io try-catch 식을 이용 catch() 연산자를 이용해 업스트림에서만 예외처리 수집기 측에서 예외처리하기 예외는 collect을 하는 수집기 측에서도 try-catch 식을 이용해 할 수 있습니다. import kotlinx.coroutines.* import kotlinx...

[XX캠퍼스] 13.Kotlin Coroutines & Flow ( 플래트닝 )

https://dalinaum.github.io/coroutines-example/ 코루틴 실습 dalinaum.github.io 플로우에서는 3가지 유형의 flatMap을 지원하고 있습니다. flatMapConcat, flatMapMerge, flatMapLatest 입니다. flatMap 이란 ?? https://wooooooak.github.io/kotlin/2019/05/04/Map-vs-flatMap/ map과 flatMap에 대하여 · 쾌락코딩 map과 flatMap에 대하여 04 May 2019 | kotlin FP basic FlatMap을 이해하기 위해 Map과 FlatMap의 차이점을 알아보자. Map map은 이해하기 쉽다. 반복 가능한 배열을 대상으로, 배열의 각 요소를 하나하나 순..

[XX캠퍼스] 12.Kotlin Coroutines & Flow ( Flow 결합하기 )

zip으로 묶기 combine으로 묶기 zip으로 묶기 zip은 양쪽의 데이터를 한꺼번에 묶어 새로운 데이터를 만들어 냅니다. import kotlinx.coroutines.* import kotlinx.coroutines.flow.* fun main() = runBlocking { val nums = (1..3).asFlow() val strs = flowOf("일", "이", "삼") nums.zip(strs) { a, b -> "${a}은(는) $b" } .collect { println(it) } } 실행결과 1은(는) 일 2은(는) 이 3은(는) 삼 combine으로 묶기 combine은 양쪽의 데이터를 같은 시점에 묶지 않고 한 쪽이 갱신되면 새로 묶어 데이터를 만듭니다. import kotl..

[XX캠퍼스] 11.Kotlin Coroutines & Flow ( Flow 버퍼링 )

버퍼가 없는 플로우 보내는 쪽과 받는 쪽이 모두 바쁘다고 가정해봅시다 import kotlinx.coroutines.* import kotlinx.coroutines.flow.* import kotlin.system.* fun simple(): Flow = flow { for (i in 1..3) { delay(100) emit(i) } } fun main() = runBlocking { val time = measureTimeMillis { simple().collect { value -> delay(300) println(value) } } println("Collected in $time ms") } 실행결과 1 2 3 Collected in 1249 ms buffer buffer로 버퍼를 추가해 ..

[XX캠퍼스] 10.Kotlin Coroutines & Flow ( Flow 컨텍스트 )

플로우는 코루틴 컨텍스트에서 플로우는 현재 코루틴 컨텍스트에서 호출 됩니다. import kotlinx.coroutines.* import kotlinx.coroutines.flow.* fun log(msg: String) = println("[${Thread.currentThread().name}] $msg") fun simple(): Flow = flow { log("flow를 시작합니다.") for (i in 1..10) { emit(i) } } fun main() = runBlocking { launch(Dispatchers.IO) { simple() .collect { value -> log("${value} 를 받음.") } } } 실행결과 [DefaultDispatcher-worker-1 @..

[XX캠퍼스] 09.Kotlin Coroutines & Flow ( Flow 연산)

map filter filterNot transform take takeWhile drop dropWhile 종단 연산자(terminal operator) - reduce - fold count 연산자 플로우와 map 플로우에서 map 연산을 통해 데이터를 가공할 수 있습니다. import kotlin.random.Random import kotlinx.coroutines.* import kotlinx.coroutines.flow.* fun flowSomething(): Flow = flow { repeat(10) { emit(Random.nextInt(0, 500)) delay(10L) } } fun main() = runBlocking { flowSomething().map { // it으로 활용 "..

[XX캠퍼스] 08.Kotlin Coroutines & Flow ( Flow 기초 )

처음만나보는 플로우 Flow는 코틀린에서 쓸 수 있는 비동기 스트림입니다 - 코루틴을 사용하여 코틀린에서 쓸수 있는 스트림 - 스트림이기때문에 변화를 추적할 수 있다. import kotlin.random.Random import kotlinx.coroutines.* import kotlinx.coroutines.flow.* fun flowSomething(): Flow = flow { repeat(10) { emit(Random.nextInt(0, 500)) delay(10L) } } fun main() = runBlocking { flowSomething().collect { value -> println(value) } } Flow // Flow flow 플로우 빌더 함수를 ..

728x90
반응형