분류 전체보기 (55) 썸네일형 리스트형 안드로이드로이드에서 Constants를 효율적으로 사용하려 어떻게 해야할까? 1. 서론Android/Kotlin 프로젝트를 진행하다 보면, 상수를 선언할 때 크게 두 가지 방식 중 하나를 사용합니다.최상위 레벨(top-level) 상수companion object 내부에 상수두 방식이 실제로 어떤 차이가 있는지, 성능이나 APK 크기, 메모리 사용량에 차이가 있는지 궁금해질 때가 있습니다. 이번 글에서는 컴파일 과정에서 생성되는 바이트코드와 R8 최적화 과정을 살펴보며, 어떤 방식을 쓰는 것이 효과적인지 알아보겠습니다.2. Kotlin에서 상수 선언하기Kotlin에서는 상수를 만들기 위해 const val 키워드를 사용합니다. 대표적인 선언 패턴은 다음과 같습니다.최상위 레벨 상수// MyConstants.kt const val MAX\_RETRY\_COUNT = 3클래스 내부 .. Android에서의 객체 전달 방법 비교 Serializable vs Parcelable, Parcel 안드로이드 개발을 하다 보면 액티비티(Activity) 간, 혹은 서비스(Service) 간 데이터를 전송해야 하는 경우가 많습니다. 이때 자주 사용되는 방법이 Serializable과 Parcelable이며, 실제 데이터를 담아 전달하는 그릇 역할로 Parcel이 사용됩니다. 이번 포스팅에서는 각각이 무엇이며 왜 쓰이는지, 어떤 상황에서 더 유용한지, 간단 예제까지 살펴보겠습니다.1. Serializable1.1 특징Java 표준 인터페이스: java.io.Serializable 인터페이스를 구현하기만 하면 됩니다.Reflection 기반: 런타임에 리플렉션을 통해 필드를 직렬화하기 때문에 단순 구현이 가능하지만, 그만큼 속도가 느리고 오버헤드가 큼.사용 용도: 안드로이드가 아닌 순수 Java 환경에서.. Jetpack Compose에서의 매개변수 전달 - Composition Local Jetpack Compose에서의 매개변수 전달 문제Jetpack Compose로 앱을 개발하다 보면, 다음과 같은 상황을 겪을 수 있습니다:상위 컴포저블(Composable)에서 정의한 Theme, Color, Spacing, Localization 등 UI에서 자주 쓰이는 "공용 데이터"를 하위 컴포저블로 전달해야 한다.직접 사용하지도 않는 중간 컴포저블에까지 매번 매개변수를 넘겨주어야 해서 코드 가독성과 유지보수가 어려워진다.이 문제를 "prop drilling"이라고 부르는데, React Native나 Flutter 개발 경험이 있는 분이라면 익숙할 겁니다.Jetpack Compose에서는 Composition Local을 통해 이 문제를 해결할 수 있습니다.Composition Local이란?C.. 안드로이드 jetcaster 예제 분석 - Flow와 Combine을 이용한 흐름 제어 https://github.com/android/compose-samples/blob/main/Jetcaster/tv/src/main/java/com/example/jetcaster/tv/ui/search/SearchScreenViewModel.kt위에 코드의 flow와 combine을 이용한 흐름들의 변경에 따라 값을 갱신(UI)하는 로직을 분석해보자1. 코드 개요1.1 SearchScreenViewModel의 핵심 플로우들코드를 보면, 몇 가지 StateFlow/MutableStateFlow 들이 모여 최종 uiStateFlow를 만들어 내는 구조입니다.사용자가 직접 입력/선택하는 값keywordFlow: 사용자의 검색어 입력.selectedCategoryListFlow: 사용자가 현재 선택한 카테고.. MVI란? 안드로이드에서 MVI는 무엇이고 어떻게 적용할까? 1. MVI(Model-View-Intent)란?MVI는 말 그대로 Model - View - Intent를 통해 단방향 데이터 흐름(Unidirectional Data Flow)을 구현하는 아키텍처 패턴입니다.Intent: 사용자 액션(이벤트) 혹은 시스템 이벤트.예) 버튼 클릭, 텍스트 입력, 스크롤, 외부 알림, 네트워크 응답 등 “무엇을 할 것인지” 의도를 표현합니다.Model: UI가 그릴 상태(State).뷰에 표시되어야 할 “현재 상태”를 모두 포괄. 예) 로딩 여부, 보여줄 데이터 리스트, 에러 메시지 등.View: 실제 UI.MVI에서는 View가 상태(Model)를 구독(subscribe)하고, 상태가 바뀌면 자동으로 화면을 갱신합니다.흐름은 보통 다음과 같습니다:View에서 Inten.. 컴포즈 UI 성능과 Stability Compose UI Performance와 Stability: 실무 가이드Android Compose를 사용하여 성능과 안정성을 확보하는 것은 사용자 경험을 개선하고 유지보수를 용이하게 하는 데 필수적입니다. 이 글에서는 Android 개발자 문서의 Compose Stability를 바탕으로, 주요 개념과 실전 예제를 자세히 살펴봅니다.1. 기본 개념: Compose Stability란?Compose Stability는 Compose UI에서 불필요한 재구성을 줄여 성능을 최적화하고, UI의 상태를 예측 가능하게 유지하는 것을 의미합니다. 핵심은 다음과 같습니다:Stable Object: 안정적인 객체로, 동일한 입력에 대해 동일한 결과를 제공합니다.Immutable Object: 불변 객체로, 객체의 .. 솔리드 5대원칙 개념 정리 및 코틀린 예제 SOLID란?로버트 C. 마틴(“아저씨”라고도 불리는 Uncle Bob)이 정립한 객체지향 프로그래밍 설계 원칙들의 집합인 SOLID는 유지보수성과 확장성을 높이는 데 도움을 줍니다.아래 다섯 가지 원칙은 각각 단일 책임 원칙 (SRP), 개방-폐쇄 원칙 (OCP), 리스코프 치환 원칙 (LSP), 인터페이스 분리 원칙 (ISP), 의존 역전 원칙 (DIP) 입니다.목차단일 책임 원칙 (SRP)개방-폐쇄 원칙 (OCP)리스코프 치환 원칙 (LSP)인터페이스 분리 원칙 (ISP)의존 역전 원칙 (DIP)1. 단일 책임 원칙 (Single Responsibility Principle, SRP) “클래스(또는 모듈)는 단 하나의 책임만 가져야 한다.”한 클래스가 여러 책임을 지면, 변경될 이유가 여러 군데에서.. Sealed Class와 Enum Class의 차이점 Sealed Class와 Enum Class의 차이점코틀린에서는 Sealed Class와 Enum Class 모두 특정 값의 집합을 정의하고 관리하는 데 사용됩니다. 하지만 이 둘은 사용 목적과 동작 방식에서 큰 차이가 있습니다. 이번 글에서는 Sealed Class와 Enum Class의 차이점과 각각의 활용 사례를 정리합니다.1. Enum Class정의Enum Class는 고정된 상수 집합을 정의하는 데 사용됩니다. 이 클래스는 각 상수가 하나의 객체로 간주되며, 비교와 분기에 유용합니다.특징값의 집합이 고정적이며 컴파일 시점에 정의됩니다.각 상수는 싱글톤 객체로 동작합니다.직렬화와 함께 사용하기 적합합니다.간단한 상수 집합에 적합합니다.예제enum class Direction { NORTH, .. 이전 1 2 3 4 ··· 7 다음