안드로이드
-
Jetpack Compose 이해하기 (3장) - Compose의 상태 관리와 remember, mutableStateOf안드로이드 2025. 4. 7. 21:17
Jetpack Compose 시리즈의 이전 장에서는 Composable 함수와 Recomposition의 기본 개념에 대해 알아보았습니다.이번 장에서는 Compose에서의 상태(State) 관리와 핵심이 되는 remember, mutableStateOf 에 대해 중점적으로 다뤄보겠습니다. 📌 Compose에서 상태란?Compose에서 상태(State)는 UI가 표시하는 데이터를 의미하며, 상태가 변경되면 Compose는 이를 감지하여 해당 UI를 자동으로 재구성(Recomposition)합니다.이를 통해 최신 상태가 UI에 반영됩니다.🎯 상태 선언 방법Compose에서 상태를 선언하는 일반적인 방법은 remember와 mutableStateOf를 함께 사용하는 것입니다. 이를 통해 상태를 기억하고 ..
-
Jetpack Compose 이해하기 (2장) - Jetpack Compose의 기본 개념과 Composable 함수안드로이드 2025. 4. 4. 20:40
첫 장에서는 선언형 UI와 명령형 UI의 차이점에 대해 알아보았습니다. 이번 포스팅에서는 Jetpack Compose의 기본 개념과 핵심이 되는 Composable 함수에 대해 깊이 알아보겠습니다. 📌 Jetpack Compose란?Jetpack Compose는 안드로이드에서 사용하는 선언형 UI 툴킷으로, 간결하고 직관적인 코드로 UI를 구축할 수 있게 합니다. Compose를 이용하면 UI가 상태 변화에 따라 자동으로 갱신되어 유지보수가 쉽고 생산성이 높아집니다. Compose는 다음과 같은 특징이 있습니다코드로 UI를 작성하는 방식상태(state) 기반의 자동 UI 갱신간결하고 직관적인 코드 작성 가능함수형 프로그래밍 패러다임 사용 📌 Composable 함수란?Compose에서는 UI 요소..
-
Jetpack Compose 이해하기 (1장) - 선언형 UI vs 명령형 UI안드로이드 2025. 4. 3. 00:11
안드로이드 앱 개발에서 Jetpack Compose가 등장하면서 기존의 명령형(Imperative) UI 방식에서 선언형(Declarative) UI 방식으로 패러다임이 전환되었습니다. 이번 글에서는 이 두 가지 접근법의 개념과 차이점을 비교해 보겠습니다. 📌 명령형(Imperative) UI 방식이란?명령형 UI는 화면을 구성할 때 어떻게(how) 만들어야 하는지를 단계별로 명확하게 지정하는 방식입니다. 전통적인 안드로이드 개발에서는 XML과 Kotlin 또는 Java 기반의 View 시스템이 이에 해당합니다. 예를 들어, 특정 버튼 클릭 시 텍스트의 색상을 바꾸려면 다음과 같이 구현합니다.val button = findViewById(R.id.myButton)button.setOnClickList..
-
Kotlin Flow에서의 Debounce와 Throttle 기법안드로이드 2025. 3. 25. 22:25
Kotlin에서는 Flow를 활용하여 비동기적으로 이벤트를 처리할 수 있으며, 이벤트가 지나치게 자주 발생하는 경우 이를 제어하는 다양한 기법이 필요합니다. Debounce와 Throttle은 이러한 상황에서 유용하게 사용되는 기법으로, 불필요한 작업을 줄이고 성능을 최적화하는 데 큰 도움이 됩니다. 본 글에서는 이 두 기법의 개념과 이를 Kotlin Flow에서 어떻게 적용할 수 있는지에 대해 살펴보겠습니다. 1. Debounce와 Throttle 기법이란?DebounceDebounce는 연속된 이벤트 중 마지막 이벤트만 실행되도록 처리하는 기법입니다.일정 시간 동안 추가적인 이벤트가 발생하지 않으면, 그때서야 마지막 이벤트를 처리하게 됩니다.즉, 빠르게 발생하는 여러 이벤트 중에서 마지막 이벤트를 처..
-
Maverick - MVI Framework 톺아보기안드로이드 2025. 1. 14. 21:59
Mavericks - MVI Framework개별적인 상태 속성을 노출하는 대신, 하나의 불변 데이터 클래스를 사용해 뷰모델을 업데이트하고 UI를 렌더링 합니다.Airbnb 오픈소스로 만든 MVI 프레임워크로 상태관리를 쉽게 처리하기 위한 솔루션을 제공합니다.Mavericks 1.0은 RxJava 기반으로 되어 있었는데, 2.0에서 Coroutines으로 새롭게 작성되었습니다.Mavericks 2.0에서 추가된 기능1. Coroutines 사용RxJava에서 Coroutines로 전환되면서 더 간결하고 직관적인 비동기 코드 작성 가능.2. execute 개선비동기 작업의 상태를 쉽게 관리할 수 있는 기능3. Flow 지원Mavericks StateFlow와 함께 작동하며 상태 기반 데이터 스트림을 쉽게 ..
-
[Android] WebView Bridge Thread 에러안드로이드 2022. 7. 26. 23:49
Only the original thread that created a view hierarchy can touch its views. A WebView method was called on thread 'javabridge'. All WebView methods must be called on the same thread. 위의 두 에러는 JavaScript에서 Android 메서드를 호출하고자 할 때 사용하는 Bridge에서 Android UI 작업 시 발생하는 에러입니다. 아래와 같이 JavaScript Bridge는 비 UI 스레드입니다. 해결방법🤔 WebView의 post() 메서드를 활용해 UI작업을 메인 스레드에서 작업할 수 있도록 해결했습니다. webView.post(new Runnable..
-
[Android] Clean Architecture란안드로이드 2022. 5. 30. 18:27
Clean Architecture 란?🤷🏻♂️ Uncle Bob인 로버트 C. 마틴의 Clean Architecture에서 시작. 소스 코드만 보고 소프트웨어가 수행하는 작업이 무엇인지 식별할 수 있어야 하는 소프트웨어 개발 방법론입니다. 프로그램의 목표를 달성하는 데 필요한 프로그래밍 언어, 하드웨어 및 소프트웨어 라이브러리는 구식이어야 합니다. Clean Architecture 장점 코드는 표준 MVVM 보다 테스트하기 쉽다. 완벽하게 선별된 분리 사용자 친화적인 패키지 구조 프로젝트를 계속 실행하기 쉽다. 새로운 기능을 추가하기 용이하다. Clean Architecture 단점 러닝 커브가 가파르다. 많은 추가 클래스가 포함되므로 정교함이 낮은 소프트웨어에는 적합하지 않다. Clean Archit..
-
[Android] Android Module안드로이드 2022. 5. 23. 00:26
모듈이란?🤷🏻♂️ 모듈은 소스 파일 및 빌드 설정으로 구성된 모음이며, 이를 통해 프로젝트를 별개의 기능 단위로 분할할 수 있습니다. 프로젝트에는 하나 이상의 모듈이 포함될 수 있으며, 하나의 모듈을 종속 항목으로 사용할 수 있습니다. 모듈을 추가하는 방법➕ File > New > New Module 을 통해 추가할 수 있습니다. Module vs Library Module과 Library 모두 Resource 파일과 Class 파일 등이 혼합된 모듈입니다. Module : 전체의 어플리케이션 없이 부분적으로 디버깅할 수 있고 테스트할 수 있는 작은 부분이라고 할 수 있습니다. Library : 어플리케이션의 기능 확장을 위해 이전에 컴파일된 소스 코드들의 집합입니다. 모듈의 종류🤔 applicatio..