어플을 사용하다 보면 리스트로 나열된 데이터들을 자주 볼 것이다. 이런 데이터들은 보통 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에서 위 코드를 추가하고 네비게이션에 들..
비동기 데이터 처리 라이브러리인 AAC LiveData와 Kotiln Flow를 비교해 볼 것이다. 요즘 뜨고있는 Chat GPT를 활용해서 작성해봤다. LiveData LiveData를 Chat GPT한테 물어보면 위와 같은 답변을 해준다. Chat GPT가 한 말을 정리하자면 LiveData는 안드로이드의 LifeCycle을 인식해서 생명주기에 맞게 뷰가 Destroy되거나 비활성화 되면 Observing을 중단한다. 따라서 메모리 누수가 없고 뷰의 종료로 인한 충돌이 없다. 안드로이드에서 대부분 MVVM 아키텍쳐를 사용하고 있고 LiveData를 통해 ViewModel에서 View로 데이터를 통신하거나 전송한다. ViewModel의 LiveData를 View에서 Observing해서 데이터의 변화를..
MVP/MVVM/Clean Architecture 등 아키텍처 설계 혹은 적용 경험이 있으신 분 안드로이드 채용 공고를 보면 자주 등장하는 말이다. 그래서 아키텍쳐에 대해 자세하게 알아보려고 한다. 소프트웨어 아키텍쳐 소프트웨어를 구성하는 구성요소간의 관계를 관리하는 시스템의 구조이자 소프트웨어의 설계와 업그레이드를 통제하는 지침과 원칙이다. 말 그대로 소프트웨어를 개발할 때 지켜야 하는 규칙같은 것이다. 이러한 규칙을 정하고 지키는 이유는 협업을 할 때 본인이 마음대로 짠 코드를 다른 사람들이 본다면 그 사람들은 코드를 이해하기 어려워 할 것이다. 물론 협업이 아니더라도 코드의 수정이 매우 힘들거나 구조를 이해하기 힘들어진다. 이러한 이유 때문에 아키텍쳐 패턴이라는 개념이 나오고 사용되는 것이다. 실제..
안드로이드를 개발하다 보면 에러를 마주하게 된다. 이러한 에러들을 어떻게 분석하는지와 에러를 개선하는 방법에 대해 알아볼 것이다. 에러를 개선할 때 에러 종류에 따라 어떤 식으로 설계해야 하는지도 같이 알아볼 것이다. 에러 분석 방법 먼저 에러를 분석하는 방법은 크게 어플리케이션이 출시 전과 출시 후로 나뉜다 어플리케이션 출시 전 어플리케이션 출시 후 Logcat, JUnit Test, JVM 테스트, 실 기기 테스트 Android Vitals 어플리케이션 출시 전 코딩하면 흔하게 사용하는 방법으로 에러를 확인하고 분석한다. Logcat -> IDE에서 제공하는 로그 창에서 에러 로그를 확인 JUnit Test -> JUnit과 같이 테스트 도구를 사용해서 단위 테스트를 하며 에러를 확인 JVM 테스트 ..
REST API를 사용해서 통신을 하다보면 통신에 실패했을 때에 대한 예외 처리도 해주어야 한다. 오른쪽 위에 200 OK라고 뜬 것이 통신 코드이다. 통신에 성공하면 저렇게 내용도 뜨고 통신 코드도 잘 나온다. 하지만 통신에 실패하면 아래와 같은 통신 코드와 에러 내용을 받게 된다. 클라이언트에서 REST API로 통신을 했는데 에러를 받으면 정상적으로 내용이 나오지 않을 것이다. 이것에 대해 예외 처리를 해주는 것이다. 보통은 예외 종류에 따라 에러 메세지를 출력해주게 만든다. 쉽게 말해 클라이언트에서는 사용자가 통신에 실패한 것을 두 눈으로 확인할 수 있게 출력해주는 처리를 해야하는 것이다. 프로젝트에서 REST API 통신은 레트로핏을 이용하였고, 코루틴을 사용해서 통신 처리를 했다. 예외 처리는..