안드로이드 클라이언트 Reflection 극복기
두줄요약
안드로이드 데이터 변환에 사용한 Reflection의 스크롤 반응성 저하를 분석했습니다. APT 기반 Accessor 코드 생성으로 직접 호출 방식의 성능과 유지보수성을 확보했습니다.
문제 상황
- JSON·Thrift·ContentValues·Cursor 데이터를 POJO로 통일하는 변환 계층
- CursorAdapter의 반복적 Reflection 호출로 인한 ListView 스크롤 반응성 저하
해결 방법
- Dexmaker 기반 Dalvik 바이트코드 생성 방식 구현 및 동작 검증
- Annotation Processor로 모델별 Accessor 코드 컴파일 시 자동 생성
- 필드명 hashCode 기반 switch-case로 getter·setter 직접 호출
트레이드오프
- Dexmaker의 런타임 코드 재생성, 초기 실행 성능, 스토리지 캐시 무효화 부담
- APT 방식의 APK 포함 생성 코드와 모델 변경 즉시 반영 특성
성능/운영 포인트
- Reflection·Dexmaker·APT 비교에서 모든 환경의 APT 방식 우위
- JSON·Cursor·ContentValues 등 다형 데이터 변환을 Binding 라이브러리로 추상화



