Управление состоянием WebView

WebView — это широко используемый компонент, предлагающий расширенную систему управления состоянием. WebView должен сохранять своё состояние и позицию прокрутки при изменении конфигурации. WebView может потерять позицию прокрутки, когда пользователь поворачивает устройство или раскладывает складной телефон, что заставляет пользователя снова прокручивать WebView от верхней части к предыдущей позиции прокрутки.

WebView хорошо справляется с управлением своим состоянием. Вы можете воспользоваться этим преимуществом, управляя как можно большим количеством изменений конфигурации, чтобы минимизировать количество пересозданий WebView . Ваше приложение должно обрабатывать изменения конфигурации, поскольку пересоздание активности (способ обработки изменений конфигурации системой) приводит к пересозданию WebView , что приводит к потере WebView состояния.

Результаты

Компоненты WebView вашего приложения сохраняют свое состояние и положение прокрутки при многочисленных изменениях конфигурации: от изменения размера и ориентации до сворачивания и разворачивания устройства.

Управление состоянием

По возможности избегайте повторного запуска активности во время изменения конфигурации и позвольте WebView стать недействительным, чтобы он мог изменить размер, сохраняя при этом свое состояние.

Для управления состоянием WebView :

  • Объявите изменения конфигурации, обрабатываемые вашим приложением
  • Отменить состояние WebView

1. Добавьте изменения конфигурации в файл AndroidManifest.xml вашего приложения.

Избегайте повторного выполнения действий, указав, какие изменения конфигурации обрабатываются вашим приложением (а не системой):

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

2. Отменяйте WebView каждый раз, когда ваше приложение получает изменение конфигурации.

Котлин

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

Ява

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

Этот шаг применим только к системе представлений, поскольку Jetpack Compose не требует инвалидации каких-либо элементов для корректного изменения размера Composable элементов. Однако Compose часто пересоздаёт WebView , если управление им некорректно.

Ключевые моменты

  • android:configChanges : атрибут элемента манифеста <activity> . Содержит список изменений конфигурации, обработанных действием.
  • View#invalidate() : Метод, вызывающий перерисовку представления. Унаследовано WebView .

Коллекции, содержащие это руководство

Это руководство является частью тщательно подобранной коллекции кратких руководств, охватывающих более широкие цели разработки Android:

Обеспечьте своему приложению поддержку оптимизированного пользовательского опыта на планшетах, складных устройствах и устройствах ChromeOS.

Есть вопросы или отзывы

Перейдите на нашу страницу часто задаваемых вопросов и ознакомьтесь с краткими руководствами или свяжитесь с нами и поделитесь своими мыслями.
,

WebView — это широко используемый компонент, предлагающий расширенную систему управления состоянием. WebView должен сохранять своё состояние и позицию прокрутки при изменении конфигурации. WebView может потерять позицию прокрутки, когда пользователь поворачивает устройство или раскладывает складной телефон, что заставляет пользователя снова прокручивать WebView от верхней части к предыдущей позиции прокрутки.

WebView хорошо справляется с управлением своим состоянием. Вы можете воспользоваться этим преимуществом, управляя как можно большим количеством изменений конфигурации, чтобы минимизировать количество пересозданий WebView . Ваше приложение должно обрабатывать изменения конфигурации, поскольку пересоздание активности (способ обработки изменений конфигурации системой) приводит к пересозданию WebView , что приводит к потере WebView состояния.

Результаты

Компоненты WebView вашего приложения сохраняют свое состояние и положение прокрутки при многочисленных изменениях конфигурации: от изменения размера и ориентации до сворачивания и разворачивания устройства.

Управление состоянием

По возможности избегайте повторного запуска активности во время изменения конфигурации и позвольте WebView стать недействительным, чтобы он мог изменить размер, сохраняя при этом свое состояние.

Для управления состоянием WebView :

  • Объявите изменения конфигурации, обрабатываемые вашим приложением
  • Отменить состояние WebView

1. Добавьте изменения конфигурации в файл AndroidManifest.xml вашего приложения.

Избегайте повторного выполнения действий, указав, какие изменения конфигурации обрабатываются вашим приложением (а не системой):

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

2. Отменяйте WebView каждый раз, когда ваше приложение получает изменение конфигурации.

Котлин

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

Ява

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

Этот шаг применим только к системе представлений, поскольку Jetpack Compose не требует инвалидации каких-либо элементов для корректного изменения размера Composable элементов. Однако Compose часто пересоздаёт WebView , если управление им некорректно.

Ключевые моменты

  • android:configChanges : атрибут элемента манифеста <activity> . Содержит список изменений конфигурации, обработанных действием.
  • View#invalidate() : Метод, вызывающий перерисовку представления. Унаследовано WebView .

Коллекции, содержащие это руководство

Это руководство является частью тщательно подобранной коллекции кратких руководств, охватывающих более широкие цели разработки Android:

Обеспечьте своему приложению поддержку оптимизированного пользовательского опыта на планшетах, складных устройствах и устройствах ChromeOS.

Есть вопросы или отзывы

Перейдите на нашу страницу часто задаваемых вопросов и ознакомьтесь с краткими руководствами или свяжитесь с нами и поделитесь своими мыслями.