Mobil cihazlar için web sayfaları ve uygulamalar geliştirirken masaüstü web tarayıcıları için web sayfası geliştirmeye kıyasla farklı zorluklarla karşılaşılır. Aşağıdaki uygulamalar, Android ve diğer mobil cihazlar için en etkili web uygulamasını sunmanıza yardımcı olabilir.
- Mobil cihazları web sitenizin özel bir mobil sürümüne yönlendirin. Sunucu tarafı yönlendirmelerini kullanarak bunu yapmanın çeşitli yolları vardır. Yaygın olarak kullanılan yöntemlerden biri, web tarayıcısı tarafından sağlanan kullanıcı aracısı dizesini "dinlemektir". Sitenizin mobil versiyonunun sunulup sunulmayacağını belirlemek için kullanıcı aracısında "mobile" dizesini arayın.
- Mobil cihazlar için HTML5
kullanın. HTML5, mobil web sitelerinde kullanılan en yaygın işaretleme dilidir.
Bu standart, web sitelerinin çeşitli cihazlarda çalışmasını sağlamak için mobil öncelikli geliştirmeyi teşvik eder. Önceki web dillerinin aksine, HTML5 daha basit
<DOCTYPE>vecharsetbildirimleri kullanır:<!DOCTYPE html> ... <meta charset="UTF-8">
- Web sayfanızı doğru şekilde yeniden boyutlandırmak için görünüm meta verilerini kullanın. Belgenizde
<head>, tarayıcının görüntü alanının web sayfanızı nasıl oluşturmasını istediğinizi belirten meta veriler sağlayın. Örneğin, görüntü alanı meta verileriniz tarayıcının görüntü alanı için yüksekliği ve genişliği, ilk sayfa ölçeğini ve hedef ekran yoğunluğunu belirtebilir.Aşağıdaki örnekte, görüntü alanı meta verilerinin nasıl ayarlanacağı gösterilmektedir:
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no">
Android destekli cihazlarda görünüm meta verilerini kullanma hakkında daha fazla bilgi için Web uygulamalarında farklı ekranları destekleme başlıklı makaleyi inceleyin.
- Dikey doğrusal düzen kullanın. Kullanıcının sayfanızda gezinirken sola ve sağa kaydırma yapmasını önleyin. Kullanıcılar için yukarı ve aşağı kaydırma daha kolaydır ve sayfanız daha basit hale gelir.
- Düzenin yüksekliğini ve genişliğini
match_parentolarak ayarlayın.WebViewnesnenizin yüksekliğini ve genişliğinimatch_parentolarak ayarlamak, uygulamanızın görünümlerinin doğru şekilde boyutlandırılmasını sağlar.wrap_contentolarak ayarlamanızı önermiyoruz. Bu, yanlış boyutlandırmaya neden olur. Benzer şekilde, düzen genişliğiniwrap_contentolarak ayarlamak desteklenmez veWebViewöğenizin bunun yerine üst öğesinin genişliğini kullanmasına neden olur. Bu davranış nedeniyle,WebViewnesnenizin üst yerleşim nesnelerinin hiçbirinin yüksekliğinin ve genişliğininwrap_contentolarak ayarlanmadığından da emin olmanız gerekir. - Birden fazla dosya isteğinde bulunmaktan kaçının. Mobil cihazların bağlantı hızı genellikle masaüstü bilgisayarlardan daha yavaş olduğundan sayfanızın mümkün olduğunca hızlı yüklenmesini sağlayın. Bu süreci hızlandırmanın bir yolu,
<head>içinde stil sayfaları ve komut dosyaları gibi ek dosyaları yüklemekten kaçınmaktır. Ayrıca, uygulamanıza özel ayrıntılı optimizasyon önerileri için Google'ın PageSpeed Insights aracıyla mobil analiz yapmayı da düşünebilirsiniz. - Gerekli değilse otomatik favicon indirme işlemlerini devre dışı bırakın.
Varsayılan olarak, bir siteye gidildiğinde
WebViewotomatik olarak bir favicon indirir.WebView, indirilen her site simgesinin iki kopyasını (biri Java'da, diğeri yerel bellekte) saklar. Bu nedenle, site simgesi indirmelerini devre dışı bırakmak belleği (WebViewörneği başına yaklaşık 8 KB) korur ve bant genişliği tüketimini azaltır. Uygulamanızda favicon kullanılmıyor veya gösterilmiyorsa otomatik indirmeleri devre dışı bırakmak için Jetpack Webkit kitaplığındakiWebSettingsCompat.setDownloadFaviconsEnabled()kullanın: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); }
- Kaydedilen durumu yönetme ve işlem sınırlarından kaçınma Yaşam döngüsü etkinlikleri sırasında
WebViewdurumunuzusaveState(Bundle)kullanarak kaydediyorsanız Android'in 1 MBsavedInstanceStatesınırını aşmamak içinWebViewCompat.saveState()kullanarak yük boyutu sınırlarını zorunlu kılın. Daha fazla bilgi için WebView durumunu verimli bir şekilde yönetme başlıklı makaleyi inceleyin. - Tahmine dayalı içerik API'leriyle ağ bağlantılarını ve sayfa yüklemeyi optimize edin.
Gezinme gecikmesini azaltmak için ağ bağlantılarını ve içeriği önceden hazırlamak üzere Jetpack Webkit API'lerini kullanın.
WebView'ın ilk bağlantıda hemen QUIC kullanabilmesi için QUIC üzerinden HTTP/3 desteğini önceden doldurmak üzere
Profile.addQuicHints'ı çağırın ve ağ soketlerini önceden ısıtmak içinProfile.preconnect'ı kullanın. Hedef URL'ler biliniyorsa veya muhtemel ise sayfaları arka planda getirmek ya da oluşturmak içinProfile.prefetchUrlAsyncveyaWebViewCompat.prerenderUrlAsynckullanın. Daha fazla bilgi için WebView'da tahmine dayalı yükleme başlıklı makaleyi inceleyin. - Gerekli değilse otomatik favicon indirme işlemlerini devre dışı bırakın.
Varsayılan olarak, bir siteye gidildiğinde
WebViewotomatik olarak bir favicon indirir.WebView, indirilen her site simgesinin iki kopyasını (biri Java'da, diğeri yerel bellekte) saklar. Bu nedenle, site simgesi indirmelerini devre dışı bırakmak belleği (WebViewörneği başına yaklaşık 8 KB) korur ve bant genişliği tüketimini azaltır. Uygulamanızda favicon kullanılmıyor veya gösterilmiyorsa otomatik indirmeleri devre dışı bırakmak için Jetpack Webkit kitaplığındakiWebSettingsCompat.setDownloadFaviconsEnabled()kullanın: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); }
- Kaydedilen durumu yönetme ve işlem sınırlarından kaçınma Yaşam döngüsü etkinlikleri sırasında
WebViewdurumunuzusaveState(Bundle)kullanarak kaydediyorsanız Android'in 1 MBsavedInstanceStatesınırını aşmamak içinWebViewCompat.saveState()kullanarak yük boyutu sınırlarını zorunlu kılın. Daha fazla bilgi için WebView durumunu verimli bir şekilde yönetme başlıklı makaleyi inceleyin.
Ek kaynaklar
- WebView'da tahmine dayalı içerik yükleme
- WebView durumunu verimli bir şekilde yönetme
- WebView'da Pixel tarzı kullanıcı arayüzü
- Duyarlı Tasarım Hakkında Bilgi Edinin
- Değişken piksel yoğunlukları için yüksek DPI'lı resimler
- Mobil Web'le İlgili En İyi Uygulamalar
- Web'i Daha Hızlı Hale Getirme