패스잇
모바일 개발 · 심화

복잡한 Custom View를 설계할 때, onMeasure, onLayout, onDraw 메서드 내에서 발생할 수 있는 성능 병목 현상과 이를 해결하기 위한 전략들을 설명하고, 복잡한 레이아웃을 효율적으로 처리하기 위한 접근 방식을 제시해 보세요.

힌트 · 불필요한 객체 생성 최소화, 캐싱, 하드웨어 가속 활용, `invalidate()`/`requestLayout()` 호출 최소화, ViewStub, Merge 태그 등을 고려합니다.

invalidate()requestLayout()캐싱View.LAYER_TYPE_HARDWAREMeasureSpec

모범답안

복잡한 Custom View 성능 병목은 주로 onMeasure, onLayout, onDraw에서 발생합니다. onMeasure에서는 MeasureSpec을 잘못 다루거나, 불필요한 크기 계산 반복이 문제가 될 수 있습니다. onLayout에서는 잦은 레이아웃 변경, onDraw에서는 과도한 객체 생성이나 복잡한 연산이 성능 저하를 일으키죠.

해결 전략으로는, 먼저 객체 생성을 최소화하고, 계산 결과를 캐싱하여 재사용합니다. 하드웨어 가속을 활성화하고, invalidate()나 requestLayout() 호출을 최대한 줄여야 합니다. 뷰의 복잡성을 줄이기 위해 ViewStub이나 Merge 태그를 활용하는 것도 좋은 방법입니다.

복잡한 레이아웃을 효율적으로 처리하려면, ConstraintLayout을 사용하여 레이아웃 계산 비용을 줄이거나, Custom View 내에서 필요한 부분만 그리도록 최적화하는 것이 중요합니다. 필요하다면 View.LAYER_TYPE_HARDWARE를 사용하여 렌더링 성능을 향상시킬 수도 있습니다.

읽었다면, 이제 직접 답해볼 차례예요

패스잇 앱에서 이 질문에 말로 답하면 AI가 꼬리질문까지 이어가며 1:1 코칭합니다.

함께 보는 Android / Kotlin 면접 질문

← Android / Kotlin 면접 질문 전체 보기