Tworzenie stron internetowych i aplikacji na urządzenia mobilne wiąże się z innymi wyzwaniami niż tworzenie stron internetowych na przeglądarki na komputery. Poniższe wskazówki pomogą Ci stworzyć najskuteczniejszą aplikację internetową na Androida i inne urządzenia mobilne.
- Przekierowuj użytkowników urządzeń mobilnych do specjalnej wersji mobilnej witryny. Można to zrobić na kilka sposobów za pomocą przekierowań po stronie serwera. Jedną z popularnych metod jest „wykrywanie” ciągu klienta użytkownika dostarczanego przez przeglądarkę. Aby określić, czy udostępnić wersję mobilną witryny, poszukaj w kliencie użytkownika ciągu znaków „mobile”.
- Na urządzeniach mobilnych używaj HTML5. HTML5 to najpopularniejszy język znaczników używany w przypadku witryn mobilnych.
Ten standard zachęca do tworzenia stron z myślą o urządzeniach mobilnych, aby witryny działały na różnych urządzeniach. W przeciwieństwie do poprzednich języków internetowych HTML5 używa prostszych deklaracji
<DOCTYPE>icharset:<!DOCTYPE html> ... <meta charset="UTF-8">
- Używaj metadanych widocznego obszaru, aby prawidłowo zmieniać rozmiar strony internetowej. W dokumencie
<head>podaj metadane określające, jak przeglądarka ma renderować stronę internetową w widoku. Na przykład metadane widocznego obszaru mogą określać wysokość i szerokość widocznego obszaru przeglądarki, początkową skalę strony i docelową gęstość ekranu.Przykład poniżej pokazuje, jak ustawić metadane viewport:
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no">
Więcej informacji o używaniu metadanych widocznego obszaru na urządzeniach z Androidem znajdziesz w artykule Obsługa różnych ekranów w aplikacjach internetowych.
- Użyj pionowego układu liniowego. Unikaj sytuacji, w których użytkownik musi przewijać stronę w lewo i w prawo. Przewijanie w górę i w dół jest łatwiejsze dla użytkownika i upraszcza stronę.
- Ustaw wysokość i szerokość układu na
match_parent. Ustawienie wysokości i szerokości obiektuWebViewnamatch_parentzapewnia prawidłowe rozmiary widoków aplikacji. Nie zalecamy ustawiania wysokości nawrap_content, ponieważ powoduje to nieprawidłowe określenie rozmiaru. Podobnie ustawienie szerokości układu nawrap_contentnie jest obsługiwane i powoduje, że elementWebViewużywa szerokości elementu nadrzędnego. Z tego powodu ważne jest też, aby żaden z obiektów układu nadrzędnego obiektuWebViewnie miał ustawionej wysokości i szerokości nawrap_content. - Unikaj wysyłania wielu żądań dotyczących plików. Urządzenia mobilne mają zwykle mniejszą szybkość połączenia niż komputery stacjonarne, dlatego zadbaj o to, aby Twoja strona wczytywała się jak najszybciej. Jednym ze sposobów na przyspieszenie tego procesu jest unikanie wczytywania dodatkowych plików, takich jak arkusze stylów i pliki skryptów, w
<head>. Warto też przeprowadzić analizę mobilną za pomocą narzędzia PageSpeed Insights od Google, aby uzyskać szczegółowe sugestie dotyczące optymalizacji aplikacji. - Wyłącz automatyczne pobieranie ikon witryn, jeśli ich nie potrzebujesz.
Domyślnie
WebViewautomatycznie pobiera favikonę przy każdej wizycie na stronie.WebViewprzechowuje 2 kopie każdej pobranej favikony (jedną w pamięci Javy, a drugą w pamięci natywnej), więc wyłączenie pobierania favikon oszczędza pamięć (około 8 KB na instancjęWebView) i zmniejsza zużycie przepustowości. Jeśli Twoja aplikacja nie używa ani nie wyświetla ikon ulubionych, użyjWebSettingsCompat.setDownloadFaviconsEnabled()z biblioteki Jetpack Webkit , aby wyłączyć automatyczne pobieranie: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); }
- Zarządzaj zapisanym stanem i unikaj limitów transakcji. Jeśli zapisujesz stan
WebViewpodczas zdarzeń cyklu życia za pomocąsaveState(Bundle), wymuś limity rozmiaru ładunku za pomocąWebViewCompat.saveState(), aby uniknąć przekroczenia limitusavedInstanceStatew Androidzie (1 MB). Więcej informacji znajdziesz w artykule Efektywne zarządzanie stanem WebView. - Optymalizuj połączenia sieciowe i wczytywanie stron za pomocą interfejsów API do ładowania spekulacyjnego.
Aby zmniejszyć opóźnienie nawigacji, użyj interfejsów API Jetpack Webkit do wcześniejszego przygotowania połączeń sieciowych i treści.
Wywołaj
Profile.addQuicHints, aby wstępnie wypełnić obsługę HTTP/3 przez QUIC, dzięki czemu WebView może od razu używać QUIC przy pierwszym połączeniu, oraz użyjProfile.preconnect, aby wstępnie przygotować gniazda sieciowe. Gdy adresy URL stron docelowych są znane lub prawdopodobne, używaj tagówProfile.prefetchUrlAsynclubWebViewCompat.prerenderUrlAsync, aby pobierać lub renderować strony w tle. Więcej informacji znajdziesz w artykule Ładowanie spekulacyjne w WebView. - Wyłącz automatyczne pobieranie ikon witryn, jeśli ich nie potrzebujesz.
Domyślnie
WebViewautomatycznie pobiera favikonę przy każdej wizycie na stronie.WebViewprzechowuje 2 kopie każdej pobranej favikony (jedną w pamięci Javy, a drugą w pamięci natywnej), więc wyłączenie pobierania favikon oszczędza pamięć (około 8 KB na instancjęWebView) i zmniejsza zużycie przepustowości. Jeśli Twoja aplikacja nie używa ani nie wyświetla ikon ulubionych, użyjWebSettingsCompat.setDownloadFaviconsEnabled()z biblioteki Jetpack Webkit , aby wyłączyć automatyczne pobieranie: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); }
- Zarządzaj zapisanym stanem i unikaj limitów transakcji. Jeśli zapisujesz stan
WebViewpodczas zdarzeń cyklu życia za pomocąsaveState(Bundle), wymuś limity rozmiaru ładunku za pomocąWebViewCompat.saveState(), aby uniknąć przekroczenia limitusavedInstanceStatew Androidzie (1 MB). Więcej informacji znajdziesz w artykule Efektywne zarządzanie stanem WebView.
Dodatkowe materiały
- Ładowanie spekulacyjne w komponencie WebView
- Efektywne zarządzanie stanem komponentu WebView
- Interfejs użytkownika o doskonałej rozdzielczości w widoku WebView
- Więcej informacji o elastycznym projektowaniu
- Obrazy o wysokiej rozdzielczości DPI dla różnych gęstości pikseli
- Sprawdzone metody dotyczące internetu mobilnego
- Przyspieszanie działania internetu