WebView
es un componente de uso general que ofrece un sistema avanzado para la administración de estados. Una WebView
debe mantener su estado y posición de desplazamiento en todos los cambios de configuración. Un objeto WebView
puede perder la posición de desplazamiento cuando el usuario rota el dispositivo o despliega un teléfono plegable, lo que lo obliga a desplazarse nuevamente desde la parte superior de la WebView
hasta la posición de desplazamiento anterior.
WebView
administra bien su estado. Puedes aprovechar esta calidad administrando tantos cambios de configuración como sea posible para minimizar la cantidad de veces que se vuelve a crear un WebView
. Tu app debe controlar los cambios de configuración porque la recreación de actividades (la forma en que el sistema maneja los cambios de configuración) también recrea la WebView
, lo que hace que WebView
pierda su estado.
Administrará el estado
Evita la recreación de Activity
tanto como sea posible durante los cambios de configuración y deja que se invalide WebView
para que pueda cambiar de tamaño y retener su estado.
Para administrar el estado de WebView
, haz lo siguiente:
- Declara los cambios de configuración que controla tu app
- Invalida el estado
WebView
1. Agrega cambios de configuración al archivo AndroidManifest.xml
de tu app
Para evitar la recreación de actividades, especifica los cambios de configuración que maneja tu app (en lugar del sistema):
<activity
android:name=".MyActivity"
android:configChanges="screenLayout|orientation|screenSize
|keyboard|keyboardHidden|smallestScreenSize" />
2. Invalida WebView
cada vez que tu app recibe un cambio de configuración
Kotlin
override fun onConfigurationChanged(newConfig: Configuration) { super.onConfigurationChanged(newConfig) webView.invalidate() }
Java
@Override public void onConfigurationChanged(@NonNull Configuration newConfig) { super.onConfigurationChanged(newConfig); webview.invalidate(); }
Este paso se aplica solo al sistema de vista, ya que Jetpack Compose no necesita invalidar nada para cambiar el tamaño de los elementos Composable
correctamente. Sin embargo, Compose vuelve a crear una WebView
con frecuencia si no se administra correctamente.
Puntos clave
android:configChanges
: Es el atributo del elemento<activity>
del manifiesto. Enumera los cambios de configuración que controla la actividad.View#invalidate()
: Es el método que vuelve a dibujar una vista. Lo heredaWebView
.
Resultados
Los componentes WebView
de tu app ahora retienen su estado y posición de desplazamiento en varios cambios de configuración, desde el cambio de tamaño hasta el cambio de orientación, el plegado y el desplegado del dispositivo.
Colecciones que contienen esta guía
Esta guía forma parte de estas colecciones de guías rápidas seleccionadas que abarcan objetivos más amplios de desarrollo de Android:
![](https://developer.android.google.cn/static/images/quick-guides/collection-illustration.png?hl=es-419)