O WebView
é um componente usado com frequência e que oferece um sistema avançado para
gerenciamento de estado. Um WebView
precisa manter o estado e a posição de rolagem durante as mudanças de configuração. Um WebView
pode perder a posição de rolagem quando o usuário
gira o dispositivo ou desdobra um smartphone dobrável, o que força o usuário a rolar
novamente da parte de cima do WebView
para a posição de rolagem anterior.
O WebView
é bom em gerenciar o estado. Você pode aproveitar essa qualidade
gerenciando o maior número possível de mudanças de configuração para minimizar o número de
vezes que um WebView
é recriado. Seu app precisa processar mudanças de configuração
porque a recriação de atividades (a maneira como o sistema processa mudanças de
configuração) recria a WebView
, o que faz com que ela perca o estado.WebView
Resultados
Os componentes do WebView
do app mantêm o estado e a posição de rolagem em
várias mudanças de configuração, desde o redimensionamento e mudança de orientação até a dobra e o desdobramento do dispositivo.
Gerenciar estado
Evite ao máximo a recriação de atividades durante mudanças de configuração e
deixe o WebView
ser invalidado para que possa ser redimensionado, mantendo o estado.
Para gerenciar o estado do WebView
:
- Declarar mudanças de configuração processadas pelo app
- Invalidar o estado
WebView
1. Adicionar mudanças de configuração ao arquivo AndroidManifest.xml
do app
Para evitar a recriação de atividades, especifique as mudanças de configuração processadas pelo app, e não pelo sistema:
<activity
android:name=".MyActivity"
android:configChanges="screenLayout|orientation|screenSize
|keyboard|keyboardHidden|smallestScreenSize" />
2. Invalidar o WebView
sempre que o app receber uma mudança de configuração
Kotlin
override fun onConfigurationChanged(newConfig: Configuration) { super.onConfigurationChanged(newConfig) webView.invalidate() }
Java
@Override public void onConfigurationChanged(@NonNull Configuration newConfig) { super.onConfigurationChanged(newConfig); webview.invalidate(); }
Esta etapa se aplica apenas ao sistema de visualização, já que o Jetpack Compose não precisa
invalidar nada para redimensionar corretamente os elementos Composable
. No entanto, o Compose recria um WebView
com frequência quando ele não é gerenciado corretamente.
Pontos principais
android:configChanges
: atributo do elemento<activity>
do manifesto. Lista as mudanças de configuração gerenciadas pela atividade.View#invalidate()
: método que faz com que uma visualização seja redesenhada. Herdado porWebView
.
Coleções que contêm este guia
Este guia faz parte das coleções de guias rápidos selecionados que abrangem objetivos mais amplos de desenvolvimento para Android:
