안드로이드 메인 스레드: Looper와 MessageQueue 이해하기
안드로이드 메인 스레드를 UI thread라는 이름만으로 보면 왜 쉽게 막히는지 감이 잘 오지 않습니다. 이 글은 Looper와 MessageQueue 관점에서 메인 스레드 스케줄링을 풀어 설명하고, 왜 blocking이 frame drop과 ANR로 이어지는지 실무 감각으로 정리합니다.
안드로이드 메인 스레드를 UI thread라는 이름만으로 보면 왜 쉽게 막히는지 감이 잘 오지 않습니다. 이 글은 Looper와 MessageQueue 관점에서 메인 스레드 스케줄링을 풀어 설명하고, 왜 blocking이 frame drop과 ANR로 이어지는지 실무 감각으로 정리합니다.
Room Flow를 쓰면 자동 갱신 쿼리 흐름이 편해집니다. 이 글에서는 Room DAO가 Flow를 반환할 때 invalidation 기반 재조회가 어떻게 동작하는지, 장점과 과한 관찰 비용, lifecycle과 threading 주의점, LiveData나 one-shot query가 더 단순한 경우까지 실무 기준으로 정리합니다.
RecyclerView DiffUtil이 왜 필요한지 실무 기준으로 정리합니다. notifyDataSetChanged와 비교해 깜빡임, 애니메이션, 부분 갱신, areItemsTheSame와 areContentsTheSame 판단 기준을 쉽게 설명합니다.
코틀린에서 상태를 표현할 때 enum이 맞는지 sealed class가 맞는지 UI 상태 예제로 쉽게 정리합니다. payload, when 분기, enum이 더 단순한 순간까지 실무 기준으로 설명합니다.
repeatOnLifecycle과 launchWhenStarted 차이를 안드로이드 Flow 수집 관점에서 정리합니다. 왜 repeatOnLifecycle이 더 안전한지, collector restart, lifecycle gap, duplicate collection, Fragment View UI 예제까지 실무적으로 설명합니다.
ViewBinding과 DataBinding 차이를 안드로이드 실무 기준으로 정리합니다. 빌드 복잡도, 디버깅 난이도, 팀 도입 현실, XML 표현식의 힘을 함께 보면서 무엇을 먼저 배우는 게 자연스러운지 설명합니다.