세 라이브러리는 모두 JSON ↔ Kotlin/Java 객체 간의 직렬화 및 역직렬화를 지원한다. 이들은 REST API 기반의 안드로이드 개발에서 흔히 사용되며, Retrofit과 함께 활용되는 경우가 많다.1. Gson내부 구조Gson은 런타임 리플렉션(Reflection) 기반으로 객체의 필드 정보를 읽어와 JSON과 매핑한다.Field 클래스의 get()/set()을 사용Getter/Setter 없이도 접근 가능자바 표준 리플렉션 API를 그대로 사용처리 과정val user = gson.fromJson(json, User::class.java)이 구문 실행 시 Gson은 다음과 같은 방식으로 동작한다:User::class.java를 기반으로 Class 객체 추출Class#getDeclaredFie..
참고 링크가 원문이다. 이번 포스팅은 사실상 내가 보기 좀 더 편하게 정리를 한 것 뿐이다.잘못된 내용은 댓글로 남겨주시면 감사하겠습니다. Retrofit Githubhttps://github.com/square/retrofit GitHub - square/retrofit: A type-safe HTTP client for Android and the JVMA type-safe HTTP client for Android and the JVM. Contribute to square/retrofit development by creating an account on GitHub.github.com Retrofit2Retrofit2는 서버와 클라이언트(Android) 간 HTTP 통신을 간편하게 처리하기 위해..
우선 Coroutine에 대해서 알아보자. Coroutine이란? Co(함께, 동시에) + routine(작업들의 집합)Coroutine은 비동적인 작업을 효율적으로 처리하기 위한 기술이다. 코루틴은 스레드와 마찬가지로 동시성을 다루지만, 스레드와는 달리 코루틴은 하나의 스레드에서 여러 개의 작업을 처리할 수 있다. 스레드?? 코루틴??Thread (스레드)운영 체제(OS) 수준의 개념이다.Java의 스레드는 "사용자 스레드(user thread)"이지만, 실제로는 커널 스레드(kernel thread)와 매핑되어 동작한다. (즉, Java는 그린 스레드(Green Thread)를 사용하지 않는다.)운영 체제가 스레드의 전환과 스케줄링을 관리한다.스레드는 선점형(preemptive)으로 동작하며, 여러 ..
ViewModel이란 무엇인가?ViewModel은 Android Architecture Component 중 하나로, UI 관련 데이터를 관리하고, 생명주기 변화(Activity/Fragment의 재생성)에도 데이터를 유지할 수 있도록 도와주는 클래스이다.ViewModel은 Life Cycle을 통해 Activity/Fragment의 수명주기를 인지하고 있다.Android의 MVVM(Model-View-ViewModel) 패턴에서 View와 Model 간의 중간 다리 역할을 한다.androidx.lifecycle.ViewModel 클래스를 상속받아 구현하며, 일반적으로 UI에서 필요한 데이터를 LiveData와 함께 사용하여 UI와 데이터를 독립적으로 관리할 수 있도록 돕는다.@HiltViewModelc..
1. Intent란?Intent는 Android의 컴포넌트 간 통신(IPC, Inter-Process Communication) 을 위한 메시징 객체이다. Intent를 사용하면 Activity, Service, BroadcastReceiver 등과 데이터를 주고받으며 시스템의 다양한 기능을 활용할 수 있다.Intent의 주요 기능Activity 간 전환Service 시작 및 바인딩Broadcast 메시지 전송 및 수신데이터 공유 및 전달시스템 기능 호출 (카메라, 갤러리, 전화 앱 실행 등) 2. Intent의 유형Intent는 크게 명시적(Explicit Intent) 과 암시적(Implicit Intent) 으로 구분된다.2.1 명시적 Intent (Explicit Intent)특정한 컴포넌트(Ac..
1. Recomposition(리컴포지션)이란?Recomposition(리컴포지션)은 Jetpack Compose에서 상태(State)의 변경에 따라 필요한 UI만 다시 그리는 과정을 의미한다.기존 XML 기반 View 시스템에서는 findViewById()를 통해 특정 View를 직접 변경했지만, Compose는 선언형(Declarative) 방식을 사용하여 상태 값이 변경되면 해당하는 UI 요소만 다시 렌더링(Recompose)한다.즉, Recomposition은 상태 기반 UI 업데이트의 핵심 개념이며, 이를 이해하면 불필요한 UI 업데이트를 방지하고 성능을 최적화할 수 있다. 2. Recomposition이 발생하는 원리1) Composable 함수와 상태(State)Composable 함수는 컴..
1. Jetpack Compose란?Jetpack Compose는 Android의 최신 UI 툴킷으로, 선언형(Declarative) 방식을 기반으로 UI를 구성할 수 있도록 설계되었다. 기존의 XML 기반 UI 작성 방식보다 직관적이며, 코드 양을 줄이고, 재사용성을 높일 수 있는 장점이 있다.Compose는 Kotlin 언어를 기반으로 동작하며, 보다 유연한 UI 개발이 가능하다. 특히 상태(State) 기반의 UI 렌더링 방식을 지원하여 동적인 UI를 효율적으로 관리할 수 있다. 2. Jetpack Compose의 주요 특징선언형 UI (Declarative UI)기존 XML 방식은 명령형(Imperative) 방식으로, UI 요소를 직접 조작하고 업데이트해야 했다. 하지만 Compose는 선언형 ..
이번에는 저번 프로젝트에서 사용했던 View에 대해서 또 다른 것을 정리를 해보려고한다. 바로 SearchView이다. 우리가 원하는 콘텐트 혹은 스트링을 찾기 위해서 사용하는 SearchView이다. 이를 실제로 Android에서 어떤식으로 사용하였는지 그리고 어떻게 사용할 것인지에 대해서 또 공부해보자. SearchView란SearchView는 안드로이드 애플리케이션에서 검색 인터페이스를 제공하는 위젯이다. 이는 사용자가 텍스트를 입력하여 데이터를 검색할 수 있게 해주는 기능을 제공하며, 주로 툴바나 액션바에 통합되어 사용된다. SearchView는 사용자의 입력을 받아 검색 쿼리를 처리하고 결과를 제공하는 역할을 한다. SearchView 사용기XML app:iconifiedByDef..