WebView 상태 관리

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 개발 목표를 다루는 선별된 빠른 가이드 모음의 일부입니다.

앱이 태블릿, 폴더블, ChromeOS 기기에서 최적화된 사용자 환경을 지원하도록 설정합니다.

질문이나 의견이 있으신가요?

자주 묻는 질문(FAQ) 페이지로 이동하여 빠른 가이드를 알아보거나 문의하여 의견을 보내주세요.