Android164 [Android] Room에서 코루틴의 suspend함수를 사용할 때 백그라운드 스레드를 직접 생성하지 않아도 되는 이유 들어가기전에우리는 데이터베이스(DB)에서 트랜잭션을 처리할 때, 보통 백그라운드 스레드를 생성하여 실행하는 것이 일반적입니다.이는 DB 연산이 I/O 작업이므로 메인 스레드에서 실행하면 UI가 멈추는 등의 문제가 발생할 수 있기 때문입니다.과거에는 직접 Thread나 AsyncTask 등을 활용하여 별도의 스레드에서 DB 작업을 수행했습니다.이후 RxJava가 등장하면서 Scheduler를 이용해 비동기적으로 DB 작업을 수행하는 것이 가능해졌습니다. 하지만, 우리가 코루틴을 Room과 함께 사용할 때는, 별도의 백그라운드 스레드를 생성하여 처리하지 않습니다. 이것이 가능한 이유는 내부적으로 Room이 suspend 함수 여부를 체크하고, 자체적으로 백그라운드 작업을 처리해주기 때문입니다. 코루틴 환경에.. 2025. 3. 7. [Android] Composable의 Lifecycle 이 페이지에서는 컴포저블의 생명주기(lifecycle)와 Compose가 컴포저블의 recomposition 필요 여부를 결정하는 방식에 대해 설명합니다. 컴포지션Composition은 여러 개의 @Composable 함수가 컴포즈 UI 트리를 형성하는 과정 및 구조를 의미합니다.즉, Composable 함수들이 조합(Composition)되어 UI를 구성하는 것입니다.@Composablefun MyApp() { Column { Greeting(name = "Alice") Greeting(name = "Bob") }} 이 코드에서는 MyApp()이 Composition을 형성하는 역할을 하며, Greeting(name: String)이라는 @Composable 함수들이.. 2025. 3. 6. [Android] Compose에 대한 이해 Compose Jetpack Compose는 Android용 최신 선언형 UI 툴킷입니다. Compose는 선언형 API를 제공하여 앱의 UI를 명령형 방식으로 직접 변경하는 것이 아니라, 데이터 상태에 따라 UI를 렌더링하도록 만들어 줍니다. 이러한 개념과 용어는 추가 설명이 필요하지만, 앱 설계에 중요한 영향을 미칩니다. 선언형 프로그래밍 패러다임기존의 안드로이드 UI 계층 구조는 UI 위젯들의 트리(Tree) 형태로 표현될 수 있었습니다. 사용자의 상호작용 등으로 인해 앱의 상태가 변경되면, UI 계층도 이를 반영하여 업데이트해야 합니다. 가장 일반적인 UI 업데이트 방식은 findViewById() 같은 함수로 트리를 탐색하고, button.setText(String), container.addC.. 2025. 3. 6. [Android] Compose를 사용해야하는 이유 Jetpack Compose는 Android의 최신 UI 툴킷으로, UI 개발을 보다 쉽고 효율적으로 할 수 있도록 설계되었습니다. 기존 Android View 시스템과 비교했을 때 코드가 간결해지고, 유지보수가 쉬워지며, 개발 속도가 향상되는 등 다양한 장점을 제공합니다.1. 더 적은 코드기존 Android View 시스템보다 적은 코드로 UI를 구축할 수 있어 개발 속도가 빨라지고 유지보수가 쉬워짐.XML과 Kotlin을 혼합해 사용할 필요 없이, 모든 UI 코드를 Kotlin으로 작성 가능.코드가 간결해지고, 유지보수 부담이 감소.예시:Twitter: "같은 Button 클래스를 사용할 때 코드 크기가 10배 이상 작아짐"Monzo: "RecyclerView를 사용하는 화면에서 코드량이 크게 감소".. 2025. 3. 6. [Android] OkHttp Interceptor 정리 okHttpInterceptor란?OkHttp에서 제공하는 Interceptor는 요청 및 응답을 가로채고 조작할 수 있는 기능을 제공합니다. 주로 두 가지 종류의 인터셉터가 있습니다.Application InterceptorNetwork Interceptor. Application Interceptor애플리케이션 수준의 요청과 응답을 처리하는 인터셉터입니다. 네트워크 요청이 실제로 전송되기 전에 가로채고 수정할 수 있습니다.애플리케이션 수준에서 요청/응답을 가로챔.오직 한 번만 실행됨 (네트워크 요청이 실패해도 다시 실행되지 않음). 1. 헤더 수정 및 추가: 요청 헤더를 추가하거나 수정할 수 있습니다class CommonHeaderInterceptor() :Interceptor { overrid.. 2025. 3. 6. [Android] Koin의 Service Locator 패턴 Android DI 하면 그다음 항상 따라오는 Dagger, Hilt, Koin 삼 형제가 있다. 여기서 우리가 귀가 아프도록 들었던 "Koin"우리에게 익숙한 친구인 "Koin"이 사실은 DI가 아니라 Service Locator 패턴이라고 한다. 그럼 Service Locator란 무엇일까? Service Locator란?"서비스 로케이터 패턴은 로케이터에 객체의 초기화 방법을 등록하고, 해당 객체를 필요로 하는 곳에서 로케이터를 통해 객체를 제공받을 수 있도록 하는 패턴이다." Service Locator는 중앙 레지스트리 같은 역할을 한다.모든 인터페이스에 대한 구현체를 저장하고 기억하고 있다가 필요한 부분에서 사용하게 도와준다. 이와 같은 방식으로 클라이언트는 구현체와 더 느슨한 관계를 가지게.. 2025. 3. 5. 이전 1 2 3 4 5 6 7 8 ··· 28 다음