Android 화면 회전은 단순한 방향 변화가 아니라 Activity 재생성, 리소스 선택, 상태 복원까지 이어지는 구성 변경이다.
기본 흐름은 Activity 재생성에 맞춰 상태를 저장하고 복원하는 것이며, onConfigurationChanged는 재생성을 막아야 할 이유가 분명할 때 직접 처리 책임을 지는 방식으로 봐야 한다.
핵심 정리
이 글은 Android 화면 회전 때 onCreate가 다시 호출되는 기본 동작과 onConfigurationChanged를 직접 쓰는 기준을 정리한다. 기본 설정에서는 방향 변경이 Activity 재생성으로 이어질 수 있으므로 입력값, 스크롤 위치, 선택 상태를 저장하고 복원해야 한다. 재생성을 막으려면 manifest에 configChanges를 지정하지만, 그만큼 리소스 재적용과 UI 갱신을 개발자가 책임져야 한다.
- 화면 회전은 orientation뿐 아니라 화면 크기와 레이아웃 조건까지 바뀌는 구성 변경으로 다루는 편이 안전하다.
- 기본 방식은 Activity가 다시 만들어질 수 있음을 전제로 onCreate와 상태 복원 코드를 점검하는 것이다.
- 가로와 세로 레이아웃이 다르면 리소스 디렉터리를 분리해 시스템의 자동 리소스 선택을 활용할 수 있다.
- onConfigurationChanged를 쓰려면 android:configChanges에 orientation, screenSize 같은 항목을 지정해야 하며 누락하면 기대와 다르게 재생성될 수 있다.
- 동영상, 카메라, 게임처럼 재생성 비용이 큰 화면은 직접 처리할 수 있지만 회전 후 UI와 상태가 모두 맞는지 실기기에서 확인해야 한다.
Android 버전과 화면 크기 정책에 따라 동작 차이가 있으므로 실제 앱의 target SDK와 기기 조건에서 테스트해야 한다.
이어서 볼 글
- 안드로이드 개발 기본 개념: Activity, View, 생명주기 - 화면 회전 때 Activity 재생성과 상태 복원을 이해하는 배경으로 함께 볼 수 있다.
Android에서 화면을 회전하면 단순히 가로와 세로가 바뀌는 데서 끝나지 않는다. 화면 방향, 크기, 레이아웃 리소스가 함께 바뀌는 구성 변경이므로 Activity 재생성, onCreate 재호출, 상태 복원 기준을 같이 정해야 한다.
기본 동작: 재생성에 맡기기
기본 설정에서는 화면 방향이 바뀔 때 Activity가 종료됐다가 다시 생성될 수 있다. 이때 onCreate가 다시 호출되므로 입력값, 스크롤 위치, 선택 상태처럼 사용자가 보고 있던 상태를 저장하고 복원하는 코드가 필요하다.
가로와 세로 화면 구성이 다르다면 layout-land 같은 대체 리소스를 두고 시스템이 새 구성에 맞는 리소스를 고르게 하는 방식이 자연스럽다. 대부분의 화면은 이 흐름에 맞춰 상태 저장과 복원을 정확히 처리하는 편이 유지보수에 유리하다.
onConfigurationChanged를 직접 쓰는 경우
Activity 재생성을 막고 직접 회전 이벤트를 처리하려면 manifest의 activity 항목에 android:configChanges를 지정해야 한다. 화면 방향만 넣으면 충분하지 않을 수 있고, Android 3.2 이후 방향 전환에서는 screenSize나 screenLayout 같은 화면 크기 관련 변경도 함께 고려해야 한다.
직접 처리 방식은 동영상, 카메라, 게임처럼 재생성 비용이 크거나 끊김을 줄여야 하는 화면에서 선택할 수 있다. 대신 리소스 자동 재로딩, 레이아웃 재계산, 상태 갱신을 개발자가 책임진다.
선택 기준
- 일반 폼 화면이나 목록 화면은 Activity 재생성에 맞춰 상태 저장과 복원을 구현하는 방식이 기본이다.
- 가로와 세로 UI가 크게 다르면 대체 레이아웃 리소스를 사용해 시스템의 리소스 선택을 활용한다.
- onConfigurationChanged를 쓰는 화면은 회전 후 크기, 텍스트, 이미지, 포커스, 스크롤 위치가 모두 맞는지 직접 갱신해야 한다.
- Android 버전, target SDK, 태블릿과 폴더블, 멀티윈도우 환경에서는 구성 변경이 방향 전환보다 넓은 문제로 나타날 수 있다.
테스트 포인트
- 회전 후 입력값, 선택 상태, 스크롤 위치가 유지되는지 확인한다.
- 가로 전용 또는 세로 전용 화면에서 뒤로가기와 재진입 흐름이 깨지지 않는지 본다.
- 동영상, 카메라, 게임 화면은 회전 순간의 일시정지와 재개 처리를 따로 확인한다.
- 에뮬레이터만 보지 말고 실제 기기에서도 세로, 가로, 분할 화면을 테스트한다.
마무리
Android 화면 회전 처리는 onCreate가 다시 불리는 기본 흐름을 받아들일지, onConfigurationChanged로 직접 처리할지를 고르는 문제다. 재생성을 막으면 끊김은 줄일 수 있지만 자동 리소스 갱신과 상태 복원 책임도 함께 넘어온다. 화면 성격과 기기 조건을 기준으로 선택하고, 회전 후 실제 UI 상태를 반드시 확인해야 한다.
'Programming' 카테고리의 다른 글
| grep 명령어 사용법: 문자열 검색과 자주 쓰는 옵션 (0) | 2026.05.31 |
|---|---|
| ES6 모듈과 JavaScript 문법 변화 정리 (0) | 2026.05.31 |
| 안드로이드 개발 기본 개념: Activity, View, 생명주기 (0) | 2026.05.31 |
| Python setuptools: 패키지 설치와 배포 구조 이해하기 (0) | 2026.05.31 |
| Python super()와 MRO: 상속 호출 순서 이해하기 (0) | 2026.05.31 |
