Gérer l'état de WebView

WebView est un composant couramment utilisé qui propose un système avancé de gestion des états. Un WebView doit conserver son état et sa position de défilement lors des modifications de configuration. Un WebView peut perdre la position de défilement lorsque l'utilisateur fait pivoter l'appareil ou déplie un téléphone pliable, ce qui l'oblige à faire défiler à nouveau la WebView du haut jusqu'à la position de défilement précédente.

WebView est capable de gérer efficacement son état. Vous pouvez profiter de cette qualité en gérant autant de modifications de configuration que possible pour minimiser le nombre de fois où un WebView est recréé. Votre application doit gérer les modifications de configuration, car la recréation d'activité (méthode du système pour gérer les modifications de configuration) recrée la WebView, ce qui entraîne la perte de l'état de la WebView.

Résultats

Les composants WebView de votre application conservent leur état et leur position de défilement lors de plusieurs modifications de configuration, du redimensionnement au changement d'orientation, en passant par le pliage et le dépliage de l'appareil.

Compatibilité des versions

Cette implémentation est compatible avec tous les niveaux d'API.

Dépendances

Aucune.

Gérer l'état

Évitez autant que possible la recréation de l'activité lors des modifications de configuration et laissez la WebView s'invalider afin qu'elle puisse se redimensionner tout en conservant son état.

Pour gérer l'état WebView :

  • Déclarer les modifications de configuration gérées par votre application
  • Invalider l'état WebView

1. Ajouter des modifications de configuration au fichier AndroidManifest.xml de votre application

Pour éviter la recréation de l'activité, spécifiez les modifications de configuration gérées par votre application (plutôt que par le système) :

<activity
  android:name=".MyActivity"
  android:configChanges="screenLayout|orientation|screenSize
      |keyboard|keyboardHidden|smallestScreenSize" />

2. Invalider la WebView chaque fois que votre application reçoit une modification de configuration

Kotlin

override fun onConfigurationChanged(newConfig: Configuration) {
    super.onConfigurationChanged(newConfig)
    webView.invalidate()
}

Java

@Override
public void onConfigurationChanged(@NonNull Configuration newConfig) {
    super.onConfigurationChanged(newConfig);
    webview.invalidate();
}

Cette étape ne s'applique qu'au système de vues, car Jetpack Compose n'a pas besoin d'invalider quoi que ce soit pour redimensionner correctement les éléments Composable. Cependant, Compose recrée souvent un élément WebView s'il n'est pas géré correctement.

Points essentiels

  • android:configChanges : attribut de l'élément <activity> du fichier manifeste. Recense les modifications de configuration gérées par l'activité.
  • View#invalidate() : lorsque cette méthode est utilisée, une vue est redessinée. Héritée par WebView.

Collections contenant ce guide

Ce guide fait partie des collections de guides de démarrage rapide organisées qui couvrent des objectifs de développement Android plus larges :

Permettez à votre application d'offrir une expérience utilisateur optimisée sur les tablettes, les appareils pliables et les appareils ChromeOS.

Vous avez des questions ou des commentaires ?

Consultez notre page de questions fréquentes pour en savoir plus sur les guides rapides ou contactez-nous pour nous faire part de vos commentaires.