본문 바로가기

Kotlin 공부 노트13

[Kotlin Flow] StateFlow vs SharedFlow 예제와 함께 차이점 알아보기! 이번 포스팅 공부 할 내용은 Flow 중에서도 StateFlow, SharedFlow를 공부해 보겠다.만약 Flow의 개념을 모른다면 링크에서 보고 오는 것을 추천한다. # StateFlow vs SharedFlow둘 다 Hot Stream이지만 용도에 맞게 사용해야 더 좋은 퍼포먼스를 낼 수 있기에 각각의 차이점을 알고 구분해서 사용하는 것이 중요하다.## StateFlow### 초기값이 필수적private val _mainState: MutableStateFlow = MutableStateFlow(MainState.Loading)val mainState = _mainState 보통 ViewModel에서 위와 같이 사용할 텐데 초기값을 필수적으로 적어줘야 한다.만약 초기값을 안 주면 아래와 같은 오류 .. 2024. 11. 30.
[Kotlin Flow] 코틀린 Flow란? - 예제와 함께 알아보기 이번 포스팅은 안드로이드개발하면서 한 번쯤은 들어보기도 했고 사용도 해본 Flow에 대해 알아보겠다!# Flow란?- 비동기 데이터를 처리할 때 사용하는 강력한 도구 - 시간이 지남에 따라 발생하는 데이터 스트림을 처리할 수 있게 해주는 개념- RxJava의 Observable과 비슷하지만, Kotlin 코루틴을 기반으로 동작하므로 더 가볍고 직관적이다.# 특징- Cold Stream이다. 즉 구독(subscribe) 하기 전까지는 데이터를 생성하지 않는다. 데이터를 필요로 할 때만 흐름을 시작한다.- map, filter, collect 등 다양한 연산자를 사용 가능하다.# 구조위 사진은 공식문서에서 나오는 사진이다. 사진을 보면 데이터 스트림에는 Consumer(소비자), Intermediary(중개.. 2024. 9. 17.
[Kotlin-Coroutine] coroutine Mutex(상호배제) 예제를 통한 사용법 이번 포스팅은 이전 개발자분이 만들어 놓은 코드 분석 중 처음 접한 Coroutine의 Mutex를 사용한 코드가 있어 알아둬야겠다고 생각해서 적어본다. 우선 아래 정리를 통해 Mutex대해 알아보자!# Mutex란? (특징)- Mutual Exclusion의 약자로 "상호 배제"를 의미한다. ("상호 배제"에 관해서는 시간이 난다면 따로 블로그 포스팅을 해야겠다..) - 여러 코루틴이 동시에 공유 자원에 접근하지 못하게 하여 데이터 일관성을 유지시켜 준다. - 한 코루틴이 Mutex를 획득하면, 다른 코루틴은 해당 Mutex가 해제될 때까지 대기하게 된다.# Mutex 사용 이유그럼 Mutex는 왜 사용하냐? 위 Mutex에 특징과 거의 비슷한데 간단하게 정리하면 이유는 아래와 같다여러 코루틴이 동시에.. 2024. 6. 9.
[Android-Kotlin] Groovy DSL -> Kotlin DSL Migration(코틀린 DSL로 의존성 관리 마이그레이션), Kotlin DSL이란? 이번에 공부해볼 내용은 Kotlin DSL이 뭔지 알아보고 기존 Groovy DSL을 통해 의존성 관리하던걸 Kotlin DSL로 마이그레이션 하는 것을 해보도록 하겠다. # Kotlin DSL란? 우선 본격적으로 들어가기 전에 도대체 Kotlin DSL이 뭔지를 알아야 좀 더 이해하기 쉽기 때문에 이녀석이 뭔지를 알아보자! DSL은 Domain Specific Language의 약자로 특정 분야에 국한해 사용하는 언어를 의미한다. Kotlin DSL은 Gradle, Android, SQL 등 다양한 분야에서 사용된다. 특히 Android 의존성을 관리할때 Groovy DSL를 사용했는데 안드로이드 스튜디오 4.2(Arctic Fox), 2023-04월부터 Groovy DSL가 아니라 Kotlin DSL.. 2023. 10. 29.
DTO, DAO, VO에 알아보자! 이번 포스팅은 개발하면서 한 번쯤은 들어봤고 모르면 안 되는 용어(DTO, DAO, VO)를 간단하게 알아보자! # DTO - Data Transfer Object의 약자로 계층 간 데이터 교환을 하기 위해 사용하는 객체이다. - getter & setter 만 가진 클래스이다 (코틀린은 Data Class). - 쉽게 말해서 HTTP 통신시 JSON 타입의 Request Body와 Response Body를 생각하면 된다. data class ServerResponse( val name: String = "", val age: Int = 0, val phoneNumber: String = "", ) # DAO - Data Access Object의 약자로 데이터베이스의 data에 접근하기 위한 객체이다.. 2023. 3. 30.
코틀린의 오브젝트란? (object, companion object) 개발을 하다 보면 싱글톤 패턴을 구현하기 위해 object를 사용하기도 한다. 평소에 잘 모르고 지나갔지만 이번에는 object에 관해 알아보겠다. # object object로 클래스를 정의하면 클래스 선언과 동시에 객체가 생성됨으로써 싱글톤 패턴이 적용되어 객체가 한 번만 생성이 된다. # object class 특징 1. object class 는 클래스 객체 생성 없이 즉시, 접근 가능한 클래스이다. 2. object class 는 생성자를 갖지 않는다. 3. object class 는 어느 클래스, 함수에서든 별도의 객체화 과정 없이 접근 가능하다. 4. object class 는 프로그램이 실행되는 동안 저장된 데이터는 손실되지 않는다. 5. object class 는 코틀린에 static이 .. 2022. 2. 17.