Hilt Hilt는 Google Dagger를 기반으로 만든 안드로이드 전용 DI 라이브러리다. 프로젝트에 Hilt를 적용하는 과정에서 Hilt에 대해 자세하게 알아보려고 한다. DI 라이브러리를 접해본 사람이라면, Dagger를 많이 들어봤을 것이다. 물론 안드로이드에서도 Dagger를 사용할 수 있고 실제로 가장 많이 사용되던 라이브러리였다. 왜 Hilt를 사용했는지 알아보기 전에 세가지 DI 라이브러리를 비교해보겠다. 안드로이드에서 사용하는 DI(Dependency Injection)는 Dagger, Koin, Hilt 세가지가 있다. Dagger 구글에서 개발된 의존성 주입 프레임워크, Java 기반 프로젝트에서 가장 많이 쓰이는 도구이다. 러닝 커브가 크지만 많은 사람들이 사용하는 만큼 안정성이..
Room Room은 Android Jetpack의 구성요소 중 하나로, 로컬 Database를 관리해주는 라이브러리이다. AAC(Android Architecture Components) 구성요소로 Room 라이브러리가 나왔으며, SQLite를 활용했다. SQLite는 쿼리를 수동으로 업데이트 해야하고 여러모로 귀찮고 복잡하고 어렵고 싫다! 걍 싫다! 이런 복잡한걸 해결하기 위해 Room이 나오게 되었고, Room은 굉장히 편리하게 동작한다. Room 기본 구성요소 Room에는 3가지 구성요소를 가진다. 데이터베이스 클래스(Room Database): 데이터베이스를 보유하고 앱의 영구 데이터와의 기본 연결을 위한 기본 액세스 포인트 역할을 합니다. 데이터 항목(Entities): 앱 데이터베이스의 테이블..
어플을 사용하다 보면 리스트로 나열된 데이터들을 자주 볼 것이다. 이런 데이터들은 보통 DB나 네트워크 통신을 통해 내용을 불러와 리스트에 띄워주는 형식으로 만들어진다. 게시판이 대표적이라고 할 수 있다. 게시판의 원리에 대해 간단하게 설명하면, 게시판에서 스크롤을 내리면 데이터들이 순서대로 불러와진다. Rest API로 통신을 하고 있으면 JSON 데이터를 넣을텐데 보통은 페이지 번호도 제공해서 데이터를 끊어서 보여주게 된다. 그래서 게시판을 모바일에서 만들 때 다양한 방법이 있는데 제일 쉬운 방법은 버튼을 누르면 다음 페이지를 보여주는 방법이 있다 하지만 이 방법은 다음 데이터를 보기 위해서는 버튼을 눌러야 하는 불편함이 생긴다. 그래서 사용하는 방법이 RecyclerView Scroll Event이..
프로젝트를 진행하면서 Navigation Bar 위에 Bottom Sheet를 구현해야 하는 일이 생겼다. 만드는 과정 중에 여러가지 문제점을 발견하게 되어 작성해본다. 먼저 Navigation Bar와 Bottom Sheets에 대해 자세하게 알아보자. Navigation Bar Navigation bars offer a persistent and convenient way to switch between primary destinations in an app. 내비게이션 바는 앱에서 기본 대상 간에 전환할 수 있는 지속적이고 편리한 방법을 제공합니다. Navigation Bar는 콘텐츠간 편리하게 전환 할 수 있도록 AndroidX에서 제공되는 UI이다. XML에서 위 코드를 추가하고 네비게이션에 들..
UI User Interface의 약자 뷰에 그려지는 모든 레이아웃의 배치를 뜻한다. UI 디자인은 어플리케이션의 컴포넌트들을 어디에 어떻게 구성하는지 디자인을 하는 것이다. UX User Experience의 약자 말 그대로 사용자의 경험을 뜻해서 어플리케이션을 사용하면서 느끼는 종합적인 만족을 의미한다. UX 디자인은 어플리케이션의 전반적인 사용 경험을 좋게 디자인 한다는 포괄적인 뜻이 담겨있다. 좋은 UI / UX 직관적인 디자인: 사용자들이 쉽게 이해하고 사용할 수 있도록 직관적인 디자인이 필요합니다. 일관성: 디자인 요소와 행동 방식에 일관성이 있어야 합니다. 이는 사용자들이 이용하는 다양한 기능들 간에 일관성을 유지해줌으로써 사용자들이 쉽게 이해하고 사용할 수 있게 도와줍니다. 가독성: 텍스트..
비동기 데이터 처리 라이브러리인 AAC LiveData와 Kotiln Flow를 비교해 볼 것이다. 요즘 뜨고있는 Chat GPT를 활용해서 작성해봤다. LiveData LiveData를 Chat GPT한테 물어보면 위와 같은 답변을 해준다. Chat GPT가 한 말을 정리하자면 LiveData는 안드로이드의 LifeCycle을 인식해서 생명주기에 맞게 뷰가 Destroy되거나 비활성화 되면 Observing을 중단한다. 따라서 메모리 누수가 없고 뷰의 종료로 인한 충돌이 없다. 안드로이드에서 대부분 MVVM 아키텍쳐를 사용하고 있고 LiveData를 통해 ViewModel에서 View로 데이터를 통신하거나 전송한다. ViewModel의 LiveData를 View에서 Observing해서 데이터의 변화를..