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 en profiter pour gérer autant de modifications de configuration que possible afin de réduire 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 également la WebView
, ce qui entraîne la perte de l'état de la WebView
.
Gérer l'état
Évitez autant que possible la recréation de Activity
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 de
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 parWebView
.
Résultats
Les composants WebView
de votre application conservent désormais 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.
Collections contenant ce guide
Ce guide fait partie de ces collections de guides rapides sélectionnées qui couvrent des objectifs de développement Android plus larges:
![](https://developer.android.google.cn/static/images/quick-guides/collection-illustration.png?hl=fr)