본문 바로가기

전체 글236

[안드로이드] - ListAdapter ListAdapter 간단하게 설명하면 DiffUtil 유틸 클래스를 활용해서 아이템 업데이트를 할수 있는 기능을 추가한 Adapter 이다. AsyncListDiffer 를 더 쓰기 편하도록 랩핑한 클래스이다. RecyclerView.Adapter 가 ListAdapter 를 상속하게 하고, 초기화 시 DiffUtil 콜백 객체를 넘겨준다. submitList() 로 전체 데이터를 넘겨주면 adapter 가 백그라운드 스레드를 사용해 리스트 차이를 계산하여 화면을 갱신한다. 위 설명을 보면 왜 ListAdapter 가 RecyclerView 를 사용하는 것보다 효율적이라는 게 이해가 안될 수 있다. https://devnuts.tistory.com/205 [안드로이드] - DiffUtil 이란? (+A.. 2023. 2. 2.
[안드로이드] - DiffUtil 이란? (+AsyncListDiffer) 왜 DiffUtil 를 알아보는거야? 우리는 RecyclerView 를 사용할 때 RecyclerView.Adpater 에 notify 변경 메소드로 알려 아이템 변경을 감지하고 갱신할 수 있다는 것을 알고 있다. 보통 아이템 업데이트가 필요할 때, 아래의 메서드를 사용했다. public final void notifyDataSetChanged() { mObservable.notifyChanged(); } 전체 아이템을 다시 그리는 용도로 사용되는 메서드이다. 아이템 업데이트 과정에서 지연이 길어지면 UX에 영향을 미치기 때문에 가능한 적은 리소스와 함께 빠른 작업이 이루어져야 한다. 목록의 내용이 변경되면 notifyDataSetChanged()를 호출하여 아이템을 업데이트하지만 비용이 많이든다. 그래.. 2023. 2. 2.
[안드로이드 면접] - 10 : 1. Thread 와 Process 를 설명하자면? 더보기 프로세스는 메모리 상에서 실행 중인 프로그램을 일컫는다. 스레드는 이 프로세스 안에서 실행되는 흐름 단위를 말한다. 프로세스는 최소 하나의 스레드를 보유하고 있고, 각각 별도의 주소 공간을 독립적으로 할당 받는다. 스레드는 이 중에 Stack 만을 따로 개별적으로 할당 받고, 나머지 영역은 스레드끼리 서로 공유할 수 있다. 2. Process 가 가진 단점과 스레드 출현 목적은? 더보기 프로세스의 문제점 프로세스 생성에 큰 오버헤드가 있다. 프로세스 컨텍스트 스위칭이 비효율적이고, 이 또한 오버헤드가 크다. 프로세스 사이에 통신이 어렵다. (IPC 를 사용해야 함) 스레드의 출현 목적 프로세스보다 크기가 작은 실행 단위 필요했다 프로세스의 생성 .. 2023. 2. 2.
[안드로이드] - 클린아키텍처 - 3 이전 편 2탄에서는 밥아저씨가 소개한 클린 아키텍처를 설명하였다. 이번에는 안드로이드 개발자는 어떤식으로 클린 아키텍처를 적용할 것인가? 에 대해서 블로그를 적어보려 한다. 모바일 클린 아키텍처 모바일 환경 자체의 특성에서 오는 문제가 있다. 자원의 한계, 라이프 사이클를 신경써야하는 부분 등 많은 문제가 있으나 가장 큰 문제가 되는 부분은 프리젠테이션 로직 복잡도다. 모바일 앱의 경우 뷰 상태가 매우 복잡하고, 비동기 처리가 많은 특성이 있다. 비동기 처리 없이 순차적인 시간 흐름으로 뷰 로직을 처리하는 것은 불가능한 경우가 많기 때문에 심플하게 코드 짜는 것이 쉽지 않다. 어느 순간 내가 짠 코드조차도 특정 이벤트에 대한 반응 로직이 어찌되어 있는지 코드를 보고 바로 이해하기가 힘든 경우가 흔히 생긴.. 2023. 2. 1.
[안드로이드] - 클린아키텍처 - 2 앞에 1탄에서는 아키텍처를 왜 배워야하는 지와 2탄에서 아키텍처는 무엇인지를 정리했다. 이제는 밥아저씨가 말한 클린 아키텍처가 무엇인지를 알아보고자 한다. 클린 아키텍처 지난 수년간 우리는 시스템 아키텍처와 관련된 여러 가지 아이디어를 봐왔다. 헥사고날 아키텍처 : https://mesh.dev/20210910-dev-notes-007-hexagonal-architecture/ 오니온 아키텍처 : https://jeffreypalermo.com/2008/07/the-onion-architecture-part-1/ 스크리밍 아키텍처 : https://blog.cleancoder.com/uncle-bob/2011/09/30/Screaming-Architecture.html DCI : https://en.wi.. 2023. 2. 1.
[안드로이드 면접] - 9 : 1. 안드로이드 MVC 패턴이란? 더보기 M-model / V-view / C-controller 로 구조를 나눠서 개발을 할수 있는 아키텍처 패턴을 말한다. 해당 패턴을 이용하여 파일 구조를 나누는 이유는 개발자들끼리 협업하는 용이해지고, 유지보수와 확장성에 효율적이다. 그렇지만 흔히 알고있는 MVC 패턴은 안드로이드에 적용할 수 없다. 안드로이드는 내부 API 에 종속적이라 웹과는 살짝 다른 형태를 갖고 있다. MVC 패턴 Flow 1. 뷰(액티비티/프래그먼트)로부터 사용자 이벤트 발생 2. 모델로부터 데이터 갱신이 필요한지 확인 3. 모델로부터 전달받은 데이터를 통해 뷰를 갱신여부 판단 4. 뷰에서 UI 갱신처리 장점 - 직관적이다. - 구현하기 쉽다. - 모델과 뷰가 분리되어 모델 재활용이 가능하.. 2023. 2. 1.