안드로이드 메인 스레드: Looper와 MessageQueue 이해하기
안드로이드 메인 스레드를 UI thread라는 이름만으로 보면 왜 쉽게 막히는지 감이 잘 오지 않습니다. 이 글은 Looper와 MessageQueue 관점에서 메인 스레드 스케줄링을 풀어 설명하고, 왜 blocking이 frame drop과 ANR로 이어지는지 실무 감각으로 정리합니다.
안드로이드 메인 스레드를 UI thread라는 이름만으로 보면 왜 쉽게 막히는지 감이 잘 오지 않습니다. 이 글은 Looper와 MessageQueue 관점에서 메인 스레드 스케줄링을 풀어 설명하고, 왜 blocking이 frame drop과 ANR로 이어지는지 실무 감각으로 정리합니다.
안드로이드 ANR 원인을 메인 스레드 관점에서 정리합니다. blocking I/O, 락 대기, Binder 호출, 무거운 프레임 작업이 왜 같은 문제로 이어지는지 실무 기준으로 설명합니다.
Jetpack Compose 성능 문제는 recomposition이 있다는 사실보다, 어디가 얼마나 자주 다시 계산되고 무엇이 skip되지 못하는지에서 시작되는 경우가 많습니다. 이 글에서는 recomposition을 먼저 이해해야 하는 이유와 stability, key, 리스트 렌더링, 측정 순서를 실무 기준으로 정리합니다.
Room Flow를 쓰면 자동 갱신 쿼리 흐름이 편해집니다. 이 글에서는 Room DAO가 Flow를 반환할 때 invalidation 기반 재조회가 어떻게 동작하는지, 장점과 과한 관찰 비용, lifecycle과 threading 주의점, LiveData나 one-shot query가 더 단순한 경우까지 실무 기준으로 정리합니다.
RecyclerView DiffUtil이 왜 필요한지 실무 기준으로 정리합니다. notifyDataSetChanged와 비교해 깜빡임, 애니메이션, 부분 갱신, areItemsTheSame와 areContentsTheSame 판단 기준을 쉽게 설명합니다.
collectLatest와 collect 차이를 안드로이드 Flow 실무 기준으로 정리합니다. 무엇이 취소되는지, 검색 UI와 Compose에서 언제 써야 하는지 쉽게 설명합니다.