분류 전체보기 1204

liveData vs stateFlow

liveData와 StateFlow에 대한 간단한 예제를 만들어보겠습니다. 온라인에 찾아보면 1. 초기값을 가지고 안가지고 차이 2. 안드로이드 프레임워크(Activity/Fragment)에 종속되었나 종속되지 않았나의 차이 라고 나옵니다. 일단 1번부터 알아볼까요? 1. 초기값을 가지고 안가지고 차이 초기값을 안가진다는게 뭘까요? 간단하게 LiveData를 만들어보겠습니다. MutableLiveData() MutableLiveData(0) 차이에 따라 null 이 나오냐 안나오냐 차이가 있습니다. livedatad와 stateFlow를 사용할 때 입니다. 또한 Flow를 사용하기 때문에 유사하게 사용할 수 있습니다. implementation "androidx.lifecycle:lifecycle-run..

Android(Kotlin) 2023.09.15

Sealed Class

Sealed 클래스는 Kotlin에서 제공하는 특수한 클래스 유형 중 하나로, 계층구조를 가진 타입의 값 집합을 정의하면서 불필요한 값들을 제한할 수 있는 기능을 가집니다. Sealed 클래스를 사용하면 런타임 에러를 컴파일 타임 에러로 변경하여 버그를 더 일찍 찾을 수 있습니다. 여기에는 두 가지 주요한 구성요소가 있습니다. Sealed 클래스: 기본 클래스를 선언하는데 사용되며, 이는 abstract이며 공용 생성자가 없습니다. Sealed 클래스에 대한 하위 클래스: sealed 클래스의 모든 가능한 직접적인 하위 클래스를 나열합니다. 이러한 하위 클래스는 객체로 선언될 수도 있고 일반 클래스로 선언될 수도 있습니다. Sealed 클래스는 다음과 같이 선언할 수 있습니다 위의 예제에서 Expr는 s..

Android(Kotlin) 2023.07.15

h2 database란

H2 Database는 자바를 기반으로 작성된 오픈 소스 관계형 데이터베이스 관리 시스템(RDBMS)입니다. 이 DBMS는 메모리에서 실행될 수 있어 테스트 환경에 특히 적합하며, 개발 중에도 사용하기 쉽습니다. 그러나 이외에도 디스크 기반의 영구 데이터 저장소로 사용할 수 있습니다. H2 데이터베이스의 주요 특징은 다음과 같습니다: 장벽이 낮은 통합: H2는 JDBC API를 통해 액세스할 수 있으며, 자바 애플리케이션에서 쉽게 사용할 수 있습니다. 또한 Hibernate, Spring과 같은 인기 있는 프레임워크와도 잘 통합됩니다. 모드: H2는 서버 모드에서 실행되거나, 임베디드 모드에서 애플리케이션과 같은 JVM에서 실행될 수 있습니다. 이러한 유연성은 H2를 다양한 환경과 요구 사항에 적합하게 ..

개발/잡다개발 2023.06.24

의존성 주입이란?(DI)

의존성 주입(Dependancy Injection)에 대해서 알아보겠습니다. 간단하게 아래의 코드를 보면 됩니다. UserNotificaion에서 UserNotificaion은 EmailService에 의존합니다. 또한, EmailService가 PushService로 변경되면 코드를 변경해야 합니다. 이 문제를 해결하기 위해서 어떻게 할 수 있을까요? interface MessageService라는 것을 만들어서 아래와 같이 코드를 구현했습니다. 이렇게 하면 UserNotification이 EmailService에 의존하는 것이 아니라 MessageService를 바라보고 있고 EmailService / PushService도 마찬가지로 MessageService를 보고 있습니다. 이렇게 해서 의존성 ..

Android(Kotlin) 2023.06.12