Comment prévenir WebView rafraîchissement automatique lors de la rotation de l'écran
Ma demande - Activité avec WebView a été l'actualisation automatique lors de la rotation de l'écran et de mon activité de la première 1.
Exemple: WebView poignée 3 activité(A, B, C) lorsque je de commutation à partir d'Un->B ou B-C, alors il sera de retour pour Une quand l'écran est rotatif.
Ma question: comment pouvons-nous maintenir l'activité vivante de l'événement de rotation de l'écran?
Vous devez vous connecter pour publier un commentaire.
Soulignant @kirgy commentaire, Vous devez ajouter
orientation|screenSize
à votre manifeste si votre API > 3.2 , Il l'habitude de travailler sans elle dans certains cas.Il n'y a plus d'une approche pour s'attaquer à ce problème.
Le chemin le plus facile est d'ajouter
android:configChanges="orientation|screenSize"
à laActivity
dans votre manifeste. Par la définition de ce drapeau, vous dites Android pour ne pas détruire leActivity
et que vous allez gérer tous les changements d'orientation de l' (le cas échéant) de vous-même.L'approche plus moderne serait de se poser la
WebView
à l'intérieur d'unFragment
et de le rendre conserver son exemple, à l'aide de lasetRetainInstance(true)
drapeau. L'hébergementActivity
va encore se détruit sur les changements d'orientation, mais laFragment
contenant leWebView
sera simplement détacher et à remettre en place, sans avoir besoin de re-créer de lui-même. Vous pouvez trouver un exemple de cette fonction dans l'API de démos. Gardez à l'esprit que le soutien de la bibliothèque propose un pré-Nid d'abeille compatible mise en œuvre de fragments, alors ne soyez pas dupé par le niveau de l'API de la "régulier"Fragment
classe.WebView
s - c'est pourquoi vous trouverez toujours vous re-gonfler points de vue sur un fragment de niveau dansonCreateView()
ouonActivityCreated()
. Je n'ai pas entrer dans les détails dans ma réponse ci-dessus, mais avecsetRetainInstance(true)
vous pourriez faire de l '"ancien"WebView
enregistrer son état à un paquet et de le restaurer par la suite. Cela veut dire que leWebView
aura à reconstruire son contenu (lire: recharger l'url), il est donc visuellement pas aussi rapide/lisse comme de la manipulation de laActivity
's les modifications de la configuration manuellement.Fragment
pour enregistrer unWebView
's de l'état. Vous pouvez simplement utiliser la norme de gestion de l'état des méthodes de l'Activity
ouFragment
si c'est tout ce dont vous avez besoin.setRetainInstance(true)
n'est pas normalement nécessaire pour ce cas simple d'utilisation. Il est plus juste remplaceonRetainNonConfigurationInstance
, et est utile pour des choses comme garder unThread
active à travers les modifications de la configuration. J'aimerais éviter de compliquer les choses. En outre, depuis le simple enregistrement d'unWebView
l'état ne sera pas le garder à partir de la redessiner/recharger, la première solution est la seule véritable façon de garder transparente lors de la rotation.Ajouter
android:configChanges="orientation"
à votre fichier manifeste pour prévenir redémarre lorsque l'orientation de l'écran change.comme::
Voir cette pour certaines références.