Разработка веб-страниц и приложений для мобильных устройств сопряжена с иными трудностями по сравнению с разработкой веб-страниц для настольных веб-браузеров. Следующие рекомендации помогут вам создать наиболее эффективное веб-приложение для Android и других мобильных устройств.
- Перенаправляйте мобильные устройства на специальную мобильную версию вашего сайта. Существует несколько способов сделать это с помощью перенаправлений на стороне сервера. Один из распространенных методов — это «проверка» строки User Agent, предоставляемой веб-браузером. Чтобы определить, следует ли отображать мобильную версию вашего сайта, найдите строку «mobile» в User Agent.
- Используйте HTML5 для мобильных устройств. HTML5 — наиболее распространенный язык разметки, используемый для мобильных веб-сайтов. Этот стандарт поощряет разработку с приоритетом мобильных устройств, чтобы гарантировать работу веб-сайтов на различных устройствах. В отличие от предыдущих веб-языков, HTML5 использует более простые объявления
<DOCTYPE>иcharset:<!DOCTYPE html> ... <meta charset="UTF-8">
- Используйте метаданные области просмотра для корректного изменения размера веб-страницы. В разделе
<head>вашего документа укажите метаданные, определяющие, как вы хотите, чтобы область просмотра браузера отображала вашу веб-страницу. Например, метаданные области просмотра могут указывать высоту и ширину области просмотра браузера, начальный масштаб страницы и целевую плотность экрана.В следующем примере показано, как задать метаданные области просмотра:
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no">
Для получения дополнительной информации об использовании метаданных области просмотра на устройствах под управлением Android, ознакомьтесь с разделом «Поддержка различных экранов в веб-приложениях» .
- Используйте вертикальную линейную компоновку. Избегайте необходимости прокручивать страницу влево и вправо. Прокрутка вверх и вниз удобнее для пользователя и упрощает просмотр страницы.
- Установите высоту и ширину макета в значение
match_parent. Установка высоты и ширины объектаWebViewв значениеmatch_parentгарантирует правильное масштабирование представлений вашего приложения. Мы не рекомендуем устанавливать высоту в значениеwrap_contentпоскольку это приводит к неправильному масштабированию. Аналогично, установка ширины макета в значениеwrap_contentне поддерживается и приводит к тому, что вашWebViewиспользует ширину своего родительского элемента. Из-за этого поведения также важно убедиться, что ни у одного из родительских объектов макета объектаWebViewвысота и ширина не установлены в значениеwrap_content. - Избегайте множественных запросов файлов. Поскольку скорость соединения на мобильных устройствах обычно ниже, чем на настольных компьютерах, обеспечьте максимально быструю загрузку страницы. Один из способов ускорить загрузку — избегать загрузки дополнительных файлов, таких как таблицы стилей и скриптовые файлы, в раздел
<head>. Также рассмотрите возможность проведения анализа мобильной версии с помощью Google PageSpeed Insights для получения подробных рекомендаций по оптимизации, специфичных для вашего приложения. - Отключите автоматическую загрузку значков favicon, если они вам не нужны. По умолчанию
WebViewавтоматически загружает значок favicon при каждом посещении сайта во время навигации.WebViewхранит две копии каждого загруженного значка favicon (одну в Java и одну в нативной памяти), поэтому отключение загрузки значков favicon экономит память (примерно 8 КБ на экземплярWebView) и снижает потребление трафика. Если ваше приложение не использует или не отображает значки favicon, используйтеWebSettingsCompat.setDownloadFaviconsEnabled()из библиотеки Jetpack Webkit , чтобы отключить автоматическую загрузку:Котлин
// In this example, "myWebView" is an instance of WebView. if (WebViewFeature.isFeatureSupported(WebViewFeature.DOWNLOAD_FAVICONS_ENABLED)) { WebSettingsCompat.setDownloadFaviconsEnabled(myWebView.settings, false) }
Java
// In this example, "myWebView" is an instance of WebView. if (WebViewFeature.isFeatureSupported(WebViewFeature.DOWNLOAD_FAVICONS_ENABLED)) { WebSettingsCompat.setDownloadFaviconsEnabled(myWebView.getSettings(), false); }
- Управляйте сохраненным состоянием и избегайте превышения лимитов транзакций. Если вы сохраняете состояние
WebViewво время событий жизненного цикла с помощьюsaveState(Bundle), установите ограничения на размер полезной нагрузки с помощьюWebViewCompat.saveState()чтобы избежать превышения лимита 1 МБsavedInstanceStateв Android. Для получения дополнительной информации см. раздел «Эффективное управление состоянием WebView» .
Дополнительные ресурсы
- Эффективное управление состоянием WebView
- Идеально проработанный пользовательский интерфейс в WebView.
- Изучите адаптивный дизайн.
- Изображения с высоким разрешением (DPI) для переменной плотности пикселей.
- Рекомендации по использованию мобильного веб-сайта
- Сделайте интернет быстрее