반응형

kotlin 6

[Kotlin] StateFlow subscriptionCount 구독자 수 확인

StateFlow는 Hot stream으로 구독 여부와 상관없이 데이터를 발행합니다. 그래서 경우에 따라 비효율적인 동작이 될 수 있습니다. subscriptionCount로 구독자 수를 확인할 수 있습니다. 구독자 수를 확인하여 데이터 발행 유무를 판단하면 더 효율적인 동작을 만들 수 있습니다. Cold Stream과 Hot Stream 차이는 아래 포스팅에서 확인할 수 있습니다. 2021.10.05 - [Kotlin] - [Kotlin] Cold Stream(flow), Hot Stream(flow) 차이점 아래 예제는 구독자가 있는 경우 onActive()를 호출하고 구독자가 생기면 onInactive()를 호출합니다. onActive()가 호출 될 경우 데이터 발행을 처리하고 onInactive(..

Kotlin 2021.10.15

[Kotlin] Cold Stream(flow), Hot Stream(flow) 차이점

Flow를 사용하다 보면 Cold Stream, Hot Stream 이란 용어를 들어볼 수 있습니다. Cold Stream, Hot Stream의 차이점을 정리하겠습니다. Cold Stream 하나의 소비자(Consumer)에게 값을 보냅니다. 생성된 이후에 누군가 소비하기 시작하면 데이터를 발행합니다. 예를 들어 상태가 변하지 않는 값을 읽을 때 데이터베이스를 읽거나 URL을 통해서 서버 값을 읽는 경우 Cold Stream으로 구현할 수 있습니다. Hot Stream 하나 이상의 소비자(Consumer)에게 값을 보낼 수 있습니다. 데이터 발행이 시작된 이후 부터 모든 소비자에게 같은 데이터를 발행하고 구독자가 없는 경우에도 데이터를 발행합니다. 예를 들어 상태가 변하는 값을 읽을 때 네트워크 상태 ..

Kotlin 2021.10.05

Kotlin callbackFlow callback listener의 데이터를 Coroutines flow로 보내기

Android에서 callback listener를 코루틴(Coroutines) flow로 보내는 방법을 포스팅합니다. Android에서 이벤트가 호출될 때 listener를 통해 응답을 처리합니다. Flow를 이용하여 데이터 흐름을 만드려고할 때 listener를 통해 받은 값을 flow로 보낼 수 없습니다. Flow와 listener 내부의 scope가 다르기 때문에 listener내부에서 emit을 사용하여 바로 데이터를 보낼 수 없습니다. (Suspension functions can be called only within coroutine body) 이러한 경우 callbackflow를 사용하여 listener 내부 값을 flow로 보낼 수 있습니다. listener 내부에서 offer함수를 호..

Kotlin 2021.09.13

Kotlin KAPT(Kotlin Annotation Processing Tool) 이란

kotlin KAPT(Kotlin Annotation Processing Tool)에 대한 글입니다. Kotlin에서 Annotation처리를 위해서 KAPT(Kotlin Annotation Processing Tool)을 제공합니다. Project 내부에서 Hilt, Room, Databinding 등 library가 사용된다면 기존에 annotationProcessor에서 kapt로 바꾸어 선언하는 게 필요합니다. Kotlin은 kotlinc로 컴파일되기 때문에 기존에 Java로 작성된 Annotation Process로는 Kotlin의 Annotation이 제대로 처리되지 않습니다. 예를 들어 Android의 Room library를 사용하다가 아래와 같은 Exception을 만날 수도 있습니다. ..

Android 2021.09.13

[Kotlin] 기본적인 구문 - 2

Kotlin의 기본적인 구문(Basic syntax)에 대한 정리입니다. 2021.09.03 - [Kotlin] - [Kotlin] 기본적인 구문 - 1 [Kotlin] 기본적인 구문 - 1 Kotlin의 기본적인 구문(Basic syntax)에 대한 정리입니다. 패키지 정의와 imports 방법(Package definition and imports) 기본적으로 Java와 동일하게 패키지명은 소스파일의 맨 위에 작성합니다. package three.. 3edc.tistory.com 조건 표현식(Conditional expressions) fun maxOf(a: Int, b: Int): Int { if (a > b) { return a } else { return b } } Kotlin에서 if를 표현식..

Kotlin 2021.09.07

[Kotlin] 기본적인 구문 - 1

Kotlin의 기본적인 구문(Basic syntax)에 대한 정리입니다. 패키지 정의와 imports 방법(Package definition and imports) 기본적으로 Java와 동일하게 패키지명은 소스파일의 맨 위에 작성합니다. package three.sal import java.util.* 프로그램 진입점(Program entry point) 일반적인 언어들과 동일하게 프로그램은 main() 함수부터 시작됩니다. fun main() { println("Hello world!") } String 리스트를 인자로 받는 main함수는 아래와 같습니다. fun main(args: Array) { println(args.contentToString()) } Print 표준 출력 print("Hello..

Kotlin 2021.09.03
반응형