Die Entwicklung von Webseiten und Anwendungen für Mobilgeräte stellt andere Herausforderungen dar als die Entwicklung von Webseiten für Desktop-Webbrowser. Die folgenden Praktiken können Ihnen dabei helfen, die effektivste Webanwendung für Android und andere Mobilgeräte zu entwickeln.
- Mobilgeräte auf eine spezielle mobile Version Ihrer Website weiterleiten: Es gibt mehrere Möglichkeiten, dies mithilfe serverseitiger Weiterleitungen zu tun. Eine gängige Methode ist das „Sniffing“ des User-Agent-Strings, der vom Webbrowser bereitgestellt wird. Wenn Sie feststellen möchten, ob eine mobile Version Ihrer Website bereitgestellt werden soll, suchen Sie im User-Agent nach dem String „mobile“.
- HTML5
für Mobilgeräte verwenden: HTML5 ist die am häufigsten verwendete Auszeichnungssprache für mobile Websites.
Dieser Standard fördert die Mobile-First-Entwicklung, damit Websites auf einer Vielzahl von Geräten funktionieren. Im Gegensatz zu früheren Websprachen verwendet HTML5 einfachere
<DOCTYPE>- undcharset-Deklarationen:<!DOCTYPE html> ... <meta charset="UTF-8">
- Metadaten für den Darstellungsbereich verwenden, um die Größe Ihrer Webseite richtig anzupassen Geben Sie in Ihrem Dokument
<head>Metadaten an, die festlegen, wie der Darstellungsbereich des Browsers Ihre Webseite rendern soll. In den Darstellungsbereich-Metadaten können Sie beispielsweise die Höhe und Breite des Darstellungsbereichs des Browsers, die anfängliche Seitenskalierung und die Zielbildschirmdichte angeben.Im folgenden Beispiel wird gezeigt, wie Viewport-Metadaten festgelegt werden:
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no">
Weitere Informationen zur Verwendung von Darstellungsbereich-Metadaten für Android-Geräte finden Sie unter Verschiedene Bildschirme in Web-Apps unterstützen.
- Verwenden Sie ein vertikales lineares Layout. Vermeiden Sie, dass Nutzer beim Navigieren auf Ihrer Seite nach links und rechts scrollen müssen. Das Auf- und Abscrollen ist für den Nutzer einfacher und Ihre Seite wird übersichtlicher.
- Legen Sie die Höhe und Breite des Layouts auf
match_parentfest. Wenn Sie die Höhe und Breite desWebView-Objekts aufmatch_parentfestlegen, werden die Ansichten Ihrer App richtig dimensioniert. Wir raten davon ab, die Höhe aufwrap_contentfestzulegen, da dies zu einer falschen Größe führt. Ebenso wird das Festlegen der Layoutbreite aufwrap_contentnicht unterstützt. In diesem Fall wird fürWebViewstattdessen die Breite des übergeordneten Elements verwendet. Aus diesem Grund ist es auch wichtig, dass die Höhe und Breite der übergeordneten Layoutobjekte IhresWebView-Objekts nicht aufwrap_contentfestgelegt sind. - Mehrere Dateianfragen vermeiden: Da Mobilgeräte in der Regel eine geringere Verbindungsgeschwindigkeit als Desktopcomputer haben, sollte Ihr Seitenaufbau so schnell wie möglich sein. Eine Möglichkeit, die Geschwindigkeit zu erhöhen, besteht darin, das Laden zusätzlicher Dateien wie Stylesheets und Skriptdateien in der
<head>zu vermeiden. Sie können auch mit PageSpeed Insights von Google eine mobile Analyse durchführen, um detaillierte Optimierungsvorschläge speziell für Ihre App zu erhalten. - Automatische Favicon-Downloads deaktivieren, wenn Sie sie nicht benötigen
Standardmäßig lädt
WebViewautomatisch ein Favicon herunter, wenn eine Website beim Navigieren besucht wird.WebViewspeichert zwei Kopien jedes heruntergeladenen Favicons (eine in Java und eine im nativen Arbeitsspeicher). Wenn Sie das Herunterladen von Favicons deaktivieren, sparen Sie Arbeitsspeicher (ca. 8 KB proWebView-Instanz) und reduzieren den Bandbreitenverbrauch. Wenn Ihre App keine Favicons verwendet oder anzeigt, können Sie automatische Downloads mitWebSettingsCompat.setDownloadFaviconsEnabled()aus der Jetpack Webkit-Bibliothek deaktivieren:Kotlin
// 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); }
- Gespeicherten Status verwalten und Transaktionslimits vermeiden: Wenn Sie den
WebView-Status während des Lebenszyklus mitsaveState(Bundle)speichern, erzwingen Sie die Nutzlastgrößenbeschränkungen mitWebViewCompat.saveState(), um dassavedInstanceState-Limit von 1 MB von Android nicht zu überschreiten. Weitere Informationen finden Sie unter WebView-Status effizient verwalten. - Netzwerkverbindungen und Seitenladezeiten mit spekulativen Lade-APIs optimieren:
Um die Navigationslatenz zu verringern, können Sie mit den Jetpack Webkit APIs Netzwerkverbindungen und Inhalte im Voraus vorbereiten.
Rufen Sie
Profile.addQuicHintsauf, um die Unterstützung von HTTP/3 über QUIC vorab zu konfigurieren, damit WebView QUIC sofort bei der ersten Verbindung verwenden kann. Verwenden SieProfile.preconnect, um Netzwerksockets vorab zu initialisieren. Wenn Ziel-URLs bekannt oder wahrscheinlich sind, verwenden SieProfile.prefetchUrlAsyncoderWebViewCompat.prerenderUrlAsync, um Seiten im Hintergrund abzurufen oder zu rendern. Weitere Informationen finden Sie unter Spekulatives Laden in WebView. - Automatische Favicon-Downloads deaktivieren, wenn Sie sie nicht benötigen
Standardmäßig lädt
WebViewautomatisch ein Favicon herunter, wenn eine Website beim Navigieren besucht wird.WebViewspeichert zwei Kopien jedes heruntergeladenen Favicons (eine in Java und eine im nativen Arbeitsspeicher). Wenn Sie das Herunterladen von Favicons deaktivieren, sparen Sie Arbeitsspeicher (ca. 8 KB proWebView-Instanz) und reduzieren den Bandbreitenverbrauch. Wenn Ihre App keine Favicons verwendet oder anzeigt, können Sie automatische Downloads mitWebSettingsCompat.setDownloadFaviconsEnabled()aus der Jetpack Webkit-Bibliothek deaktivieren:Kotlin
// 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); }
- Gespeicherten Status verwalten und Transaktionslimits vermeiden: Wenn Sie den
WebView-Status während des Lebenszyklus mitsaveState(Bundle)speichern, erzwingen Sie die Nutzlastgrößenbeschränkungen mitWebViewCompat.saveState(), um dassavedInstanceState-Limit von 1 MB von Android nicht zu überschreiten. Weitere Informationen finden Sie unter WebView-Status effizient verwalten.
Zusätzliche Ressourcen
- Spekulatives Laden in WebView
- WebView-Status effizient verwalten
- Pixelgenaue Benutzeroberfläche in der WebView
- Responsives Design lernen
- Bilder mit hoher DPI für variable Pixeldichten
- Best Practices für das mobile Web
- Ihr Beitrag zu einem schnelleren Web