Android(Kotlin) 261

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

의존성 주입이란?(DI)

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

Android(Kotlin) 2023.06.12

Compose Hello World

Android Studio를 처음 켰을 때 나오는 화면입니다. 보란듯이 Empty Activity에 Jetpack Compose로고가 있죠? 이 로고를 클릭해서 시작해보겠습니다. 우선 파일 구조부터 보고 가겠습니다. Color.kt -> 말 그대로 컬러를 설정하고 Theme.kt -> 테머 설정 Type.kt -> 디자인 항목 설정 정도라고 생각하면 됩니다. 메인화면 우측에 split을 누르면 화면이 split 되는 것을 보실 수 있습니다. 해당 부분이 보이는 곳은 Preview 부분입니다.

Android(Kotlin) 2023.04.24