서론안드로이드에서 다이얼로그(Dialog)는 사용자와 상호작용할 수 있는 중요한 UI 구성 요소입니다. 다이얼로그를 구현하는 방법에는 여러 가지가 있지만, 그중 AppCompatDialog와 DialogFragment는 자주 사용되는 두 가지 방법입니다. 두 가지 다이얼로그 구현 방식의 차이점과 각각의 장단점을 정리해보려고 합니다.1. AppCompatDialog란?AppCompatDialog는 androidx.appcompat.app.AppCompatDialog 클래스를 상속받아 구현되는 다이얼로그입니다. 이는 기존의 Dialog 클래스를 확장하여, 더 향상된 테마와 기능을 제공하며, 특히 앱의 전체 테마가 AppCompat 라이브러리를 사용하는 경우 일관된 스타일을 유지할 수 있습니다. 특징스타일 ..
서론okHttp는 Square에서 개발한 java 및 android 용 HTTP 클라이언트 라이브러리이다. 위 라이브러리를 활용하면 HTTP 통신을 쉽고 효율적으로 처리할 수 있다. API 통신 시 Retrofit2와 결합하여 자주 사용되는데 okHttp에 대한 내용을 간단하게 정리해보려 한다.주요 기능 비동기 요청 지원 : okHttp3는 비동기 요청을 지원하여 네트워크 통신 중 UI 스레드를 블로킹하지 않음커넥션 풀링(Connection Pooling): HTTP/1.1의 Keep-Alive 기능과 HTTP/2의 멀티 플렉싱을 통해 효율적인 커넥션 풀링을 지원한다. 이는 네트워크 사용을 최적화하고 성능을 향상함투명한 GZIP 압축: 응답 본문을 자동으로 GZIP 압축 해제하여 네트워크 트래픽을 줄인다..
서론 지난 포스팅에 Jetpack navigation에 대해 정리해 보았다. 오늘은 navigation 사용 시 데이터 전달에 활용되는 Safe Args에 대해 정리해보려 한다. 이전 포스팅은 아래 내용 참고해주세요🤗 https://ystech.tistory.com/entry/Android-Jetpack-Navigation%EC%97%90-%EB%8C%80%ED%95%B4 [Android] Jetpack Navigation에 대해 서론 Android에서 자주 사용되는 Jetpack Navigation에 대해 정리해보려 한다. 기존 화면 전환 시 intent, transaction을 사용하지만, 앱 구성이 복잡해질수록 코드도 복잡해질 수 있다. 화면 구성 및 UI 전환 ystech.tistory.com S..
서론 Android에서 자주 사용되는 Jetpack Navigation에 대해 정리해보려 한다. 기존 화면 전환 시 intent, transaction을 사용하지만, 앱 구성이 복잡해질수록 코드도 복잡해질 수 있다. 화면 구성 및 UI 전환을 쉽게 구현할 수 있도록 도와주고, SAA 아키텍처에서 함께 사용되는 개념이라 기본적인 내용이지만 중요하다고 생각한다. Navigation이란? 먼저, Jetpack이란 Android 개발을 쉽고 빠르게 도와주는 라이브러리이다. Navigation은 UI(xml)을 통해 navigation 편집이 가능하게 해주는 라이브러리로 주로 BottomNavigation과 자주 사용된다. Fragment의 전환을 좀 더 간단하게 도와주는 도구로 생각하는 게 이해하기 가장 쉬울 ..
서론 요즘 Android Architecture에 대한 내용을 공부하던 중 SAA라는 새로운 아키텍처를 보게 되었다. Google I/O 2018 에서 언급된 내용으로 한참 지난 지금에서야 알게 된 점에 오늘도 반성중이다 ㅠ 사실 이전부터 Google에서는 Activity보다 Fragment 사용을 적극 권장했기 때문에 Single Activity 아키텍처의 사용을 권장하는 것은 당연하다고 느낀다. SAA에 대한 개념을 가볍게 정리해보려 한다. SAA란? SAA(Single Activity Architecure)는 하나 혹은 최소한의 Activity만을 사용하고 나머지 화면은 모두 Fragment로 구성한 구조로, 주로 JetPack Navigation과 함께 사용되는 아키텍처이다. Single Acti..
서론 사용자에게 정보를 표시하는 list 방식에서 사용자가 해당 list를 스크롤할 때 더 보기 혹은 로딩 view가 노출되면서 데이터가 추가로 보이는 경우를 본 경험이 있을 것이다. 이런 식으로 정보를 가져오는 방식을 Paging이라 한다. 기존에는 코드를 통해 작성했지만, jetpack에서 제공하는 Paging3를 활용하면 효율적인 Paging 구현이 가능하다. Paging3를 사용하기 위해 해당 내용을 정리해보려 한다😊 Paging 라이브러리 사용 이점 구글 공식문서에서 설명하는 Paging 라이브러리 사용 이점은 아래와 같다. Paging 데이터로 작업하는 동안 시스템 리소스를 효율적으로 사용할 수 있다. 요청 중복 삭제 기능이 기본 제공되기 때문에, 앱에서 네트워크 대역폭과 시스템 리소스를 효율..
서론 프로그래밍에서 한 번쯤은 접해봤을 DTO, DAO, Entity에 대한 개념을 정리해보려 한다. 클린 아키텍처 적용 시 헷갈리면 안 되는 개념이기 때문에 중요하다고 생각하는 개념이다. DTO(Data Transfer Object) DTO는 단어 그대로 데이터 전송 객체를 의미한다. API 호출 시 response 받는 데이터이다. 계층 간의 데이터 교환을 하기 위해 사용하는 객체 API 호출 시 서버로부터 받은 JSON 형태의 데이터를 매핑할 수 있는 data class 클린 아키텍처의 data 모듈에 model 클래스에 해당 화면에 노출시키지 않는 data가 포함된다면 domain 모듈의 model에 필요한 data만 mapping 하는 작업이 필요함 smaple api : https://json..
Hilt란? Hilt는 프로젝트에서 종속성 주입을 보다 간편하게 할 수 있도록 도와주는 Android용 종속성 주입 라이브러리다. 수동 종속성 주입을 수행하려면 모든 클래스와 해당 종속성을 직접 구성하고 컨테이너를 사용하여 종속성을 재사용하고 관리해야 한다. Hilt는 프로젝트의 모든 Android 클래스에 대한 컨테이너를 제공하고 수명 주기를 자동으로 관리함으로써 애플리케이션에서 DI를 사용하는 표준 방법을 제공한다. Hilt는 Dagger가 제공하는 컴파일 시간 정확성, 런타임 성능, 확장성 및 Dagger 라이브러리를 기반으로 구축되었다. 주요 기능 컴파일 타임 의존성 주입 : Hilt는 앱의 컴파일 타임에 의존성을 주입하여 앱의 성능을 향상시킨다. 이를 통해 앱의 크기를 줄이고 앱의 로딩 속도를 ..
서론 요즘 Android 개발자에게 요구하는 기본 stack 중 하나인 의존성 주입에 대해 정리해보려 한다. 의존성 주입에 Dagger, Hilt, Koin 같은 다양한 라이브러리를 활용하는 것으로 알고 있는데, 라이브러리를 사용하기 전에 의존성 주입에 대한 개념부터 차근차근 정리해보려 한다. 의존성 주입이란? 의존성 주입은 객체 지향 프로그래밍(OOP)에서 사용되는 디자인 패턴 중 하나이다. Android에서 의존성 주입(Dependency Injection)을 흔히 DI라고 부르는데, DI는 Class와 Class 간에 관계를 형성할 때 내부에서 생성하는 것이 아닌, 외부에서 주입하여 관계를 만드는 것을 의미한다. 인터페이스화를 통해 객체 변경에 대한 유연성을 증대시키며, 객체를 내부에서 생성하는 것..
서론 이전에 Retrofit에 대한 포스팅을 작성했었는데, Android project의 규모가 커질수록 API를 활용하는 경우가 잦아질 것이다. 인터페이스를 활용하여 API 응답 처리를 개인이 작성할 수도 있지만, Sandwich라는 간편한 라이브러리가 있어 간단하게 정리해보려고 한다. Sanwich 라이브러리란? Kotlin의 Retrofi 네트워크 응답에서 표준화된 인터페이스 생성을 간소화하기 위해 고안된 라이브러리 다중 아키텍처 내에서 기능 연산자를 활용하여 데이터, 오류 및 예외처리를 효율적으로 할 수 있음 Coroutine, Flow 등과 원활하게 통합되어 다양하게 활용 가능 사용법 build.gradle - 라이브러리 등록 dependencies { implementation "com.git..