Android

· Android
필자는 최근에 진행중인 프로젝트를 리팩터링 하였다. 기본 패키지, 파일 네이밍부터 핵심 로직 수정까지 거의 모든 파일을 수정할 정도로 많은 작업을 수행했다. 그렇다 보니, 내가 수정한 작업이 정말 이전과 같이 잘 동작하는지 파악하기가 정말 어려웠고, 시간도 많이 걸렸다. 수정한 로직에서 문제가 발생하여, 디버깅을 하면서 문제를 탐색하고 고민하는 시간이 정말 많았다. 테스트에 대한 시간 투자가 아까워, 계속해서 미루었던 나는, 이번에 테스트에 대해 공부해보고, 실제 프로젝트에 도입하려고 한다. 테스트를 왜 작성해야 할까? QA보다 더 훨씬 효율적으로 점검할 수 있다. 필요할 때 마다, 규모가 커지면 커질 수록 QA에 의존하는 것은 힘든 일이다. 자동화된 테스트는 앱의 확장가능성을 더욱 높여준다. 좋은 설계..
· Android
이번 게시글에서는 이전 게시글의 DateTime API를 이어서 설명한다. 이번 포스팅에서는 Instant, DateTimeFormatter, Kotlinx-DateTime API를 소개한다. Instant : 기계 관점에서 시간과 날짜 인간은 더 식별 가능하게, 더 기억하기 쉽게 날짜와 시간을 년도, 월일, 시분초와 같은 단위로 나누어 생각한다. 그럼 기계도 이렇게 저장할까? 당연히 아니다. 그럼 기계 관점에서 어떤 표기가 가장 효율적일까? 아마도 십진수를 이진법으로 변환하듯, 꾸준히 증가하는 연속된 시간에서 하나의 지점을 큰 수로 표현하는 것이 이상적일 것이다. Java에서는 Instant를 제공하여, Instant를 통해 기계관점에서 친화적인 시간과 날짜를 표기할 수 있다. 자세하게 Instant는..
· Android
어플을 개발할 때 많은 상황에서 시간을 활용해야 하는 순간이 발생한다. 이 때 우리는 DateTime API를 사용할 수 있다. DateTime 이전에 사용했던 Date, Calendar 라이브러리의 문제점과 DateTime 라이브러리를 소개한다. Date, Calendar vs DateTime Immutable Type 기존 Date, Calendar 라이브러리는 가변 클래스였다. 가변성은 날짜와 시간 같은 요소에서 좋지 않으며, 유지 보수를 어렵게 한다. DateTime은 불변 타입을 제공함으로써, 안전하게 사용할 수 있도록 설계되었다. Thread Safety Date, Calendar 라이브러리는 동시성 문제를 가지고 있었고, 이를 위해 추가적인 코드를 작성해야만 했다. DateTime은 불변 타..
· Android
선언형 UI Compose로 변경됨에 따라, 명령형 UI에서 선언형 UI로 변경되었다. 앞에서 이야기한 선언형 UI는 어떤 것이며, 명령형 UI와 어떤 차이점이 있을까? 기존 안드로이드 개발에서 데이터의 State가 변경되는 경우, findViewById를 통해 직접 Elements에 접근하여 setText, setImage와 같은 명령어를 사용하여 State를 직접 변경해야 했다. (ViewBinding 및 DataBinding도 개념은 같다.) 하지만 컴포즈는 선언형 UI이다. UI의 최종형태를 기술하면, 프레임 워크가 자동으로 관리한다. 구체적으로, 프레임워크가 데이터의 상태가 변하는 경우 Elements의 State를 업데이트하는 것이 아닌 화면 전체를 다시 그린다. 모든 화면을 그리는 것이 아닌..
· Android
안드로이드의 Paging3 라이브러리는 다양한 소스로부터 대용량의 데이터를 효율적으로 관리하고 가져오는 Android Jetpack의 라이브러리이다. Paging3를 사용하면 로컬이나 네트워크로부터 페이지 단위의 데이터를 가져올 수 있다. 이번 포스팅에서는 Paging3 소개와 예제를 통해 Paging3의 사용법을 소개한다. 페이징 라이브러리의 장점 페이징된 데이터는 인-메모리 캐싱하며, 이를 통해 빠른 응답과 버벅거림 없이 데이터를 불러올 수 있다. 페이지의 끝에 도달하면 데이터를 요청하고 불러오는 리사이클러 뷰 어댑터를 제공한다. 중복된 요청을 막을 수 있어, 사용자의 대역폭과 시스템 리소스를 절약할 수 있다. 코틀린으로 구성되어 있어, 모든 코틀린 및 Jetpack 라이브러리와 완벽한 호환이 가능하..
· Android
필자는 모든 프로젝트마다 Timber를 도입했다. 단지 이유는 따로 Tag를 설정하지 않아도 된다는 이점 때문이였다. 블로그 스터디를 하던 도중 Timber 사용 이점에 대해서 질문을 받았고, Tag이외의 이점에 대해 설명할 수 없었다. 그래서 이번에 Timber가 Log에 비해 가지는 장점과 추가적으로 Logger에 대해서 알아보고, 소개하려고 한다. 사전 지식 : Log, LogCat Log는 시스템이 동작하면서 발생하는 이벤트 및 메시지의 기록을 의미한다. 오류, HTTP 호출과 같은 상황에서 발생하는 상황에 대한 단계별로 상세한 정보를 나타낼 수 있다. LogCat은 Android Studio에서 제공하는 기능으로 실시간으로 발생한 Log를 확인할 수 있는 창이다. LogCat 상세 기능 사전 지..
정자이노
'Android' 카테고리의 글 목록 (2 Page)