
기기 가속도 센서를 이용해 공이 중력에 반응하는 물리 시뮬레이션 앱입니다. 초기 구현 후 화면 끊김 현상을 체감했고, adb shell dumpsys gfxinfo를 활용해 원인을 분석했습니다.
이후 Compose 렌더링 구조와 게임 루프를 개선하여 정량적인 성능 최적화를 수행하고 검증했습니다.
🔧 기술 스택
Kotlin · Jetpack Compose · MVVM · SensorManager · Coroutines
Canvas · LaunchedEffect · withFrameNanos · @Volatile
adb shell dumpsys gfxinfo
⚠️ 문제
delay(16L) 기반 게임 루프가 실제 화면의 vsync 신호와 동기화되지 않아 프레임 타이밍이 불규칙했음🛠 해결
PhysicsViewModel로 분리하여 Composable은 상태 구독과 렌더링만 담당하도록 개선delay(16L) 기반 게임 루프를 withFrameNanos 기반 vsync 동기화 루프로 변경@Volatile을 적용해 센서 스레드와 UI 스레드 간 공유 변수의 가시성을 확보adb shell dumpsys gfxinfo를 활용해 리팩토링 전후 성능을 동일 환경에서 측정 및 비교📈 결과
🔗 링크
📝 회고