WebView
는 일반적으로 사용되는 구성요소로, 상태 관리를 위한 고급 시스템을 제공합니다. WebView
는 구성 변경 시 상태와 스크롤 위치를 유지해야 합니다. WebView
는 사용자가 기기를 회전하거나 폴더블 휴대전화를 펼칠 때 스크롤하던 위치를 잃을 수 있습니다. 이런 경우 사용자가 WebView
의 상단에서 이전 스크롤 위치로 다시 스크롤해야 합니다.
WebView
는 상태를 관리하는 데 능숙합니다. 가능한 한 많은 구성 변경을 관리하여 WebView
가 다시 생성되는 횟수를 최소화하면 이 기능의 장점을 활용할 수 있습니다. 활동 재생성 (시스템에서 구성 변경을 처리하는 방식) 시 WebView
도 다시 생성되므로 WebView
에서 상태가 손실될 수 있기 때문에 앱이 구성 변경을 처리해야 합니다.
상태 관리
구성 변경 중에 Activity
재생성을 최대한 방지하고 상태를 유지하면서 크기를 조절할 수 있도록 WebView
를 무효화합니다.
WebView
상태를 관리하려면 다음 단계를 따르세요.
- 앱에서 처리하는 구성 변경 선언
WebView
상태 무효화
1. 앱의 AndroidManifest.xml
파일에 구성 변경사항 추가
시스템이 아닌 앱에서 처리하는 구성 변경을 지정하여 활동 재생성을 방지합니다.
<activity
android:name=".MyActivity"
android:configChanges="screenLayout|orientation|screenSize
|keyboard|keyboardHidden|smallestScreenSize" />
2. 앱이 구성 변경을 수신할 때마다 WebView
를 무효화
Kotlin
override fun onConfigurationChanged(newConfig: Configuration) { super.onConfigurationChanged(newConfig) webView.invalidate() }
자바
@Override public void onConfigurationChanged(@NonNull Configuration newConfig) { super.onConfigurationChanged(newConfig); webview.invalidate(); }
이 단계는 Jetpack Compose가 Composable
요소의 크기를 올바르게 조절하기 위해 어떤 것을 무효화할 필요가 없으므로 뷰 시스템에만 적용됩니다. 그러나 WebView
를 올바르게 관리하지 않으면 Compose에서 다시 만들기도 합니다.
핵심사항
android:configChanges
: 매니페스트<activity>
요소의 속성입니다. 활동이 처리하는 구성 변경을 나열합니다.View#invalidate()
: 뷰를 다시 그리는 메서드입니다.WebView
에서 상속됩니다.
결과
이제 앱의 WebView
구성요소가 크기 조절, 방향 변경, 기기 접기 및 펼치기 등 여러 구성 변경사항에 대해 상태 및 스크롤 위치를 유지합니다.
이 가이드가 포함된 컬렉션
이 가이드는 더 광범위한 Android 개발 목표를 다루는 선별된 빠른 가이드 모음의 일부입니다.
![](https://developer.android.google.cn/static/images/quick-guides/collection-illustration.png?hl=ko)