Mengembangkan halaman dan aplikasi web untuk perangkat seluler menghadirkan tantangan yang berbeda dibandingkan dengan mengembangkan halaman web untuk browser web desktop. Praktik berikut dapat membantu Anda menyediakan aplikasi web yang paling efektif untuk Android dan perangkat seluler lainnya.
- Mengalihkan perangkat seluler ke versi seluler khusus situs Anda. Ada beberapa cara untuk melakukannya menggunakan pengalihan sisi server. Salah satu metode umum adalah "memperkirakan" string Agen Pengguna yang disediakan oleh browser web. Untuk menentukan apakah akan menayangkan versi seluler situs, cari string "seluler" di Agen Pengguna.
- Gunakan HTML5
untuk perangkat seluler. HTML5 adalah bahasa markup yang paling umum digunakan untuk situs seluler.
Standar ini mendorong pengembangan yang memprioritaskan perangkat seluler untuk membantu memastikan bahwa situs berfungsi di berbagai perangkat. Tidak seperti bahasa web sebelumnya, HTML5 menggunakan deklarasi
<DOCTYPE>dancharsetyang lebih sederhana:<!DOCTYPE html> ... <meta charset="UTF-8">
- Gunakan metadata area pandang untuk mengubah ukuran halaman web Anda dengan benar. Dalam dokumen
<head>, berikan metadata yang menentukan cara Anda ingin area pandang browser merender halaman web Anda. Misalnya, metadata area pandang Anda dapat menentukan tinggi dan lebar area pandang browser, skala halaman awal, dan kepadatan layar target.Contoh berikut menunjukkan cara menyetel metadata area tampilan:
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no">
Untuk mengetahui informasi selengkapnya tentang cara menggunakan metadata area pandang untuk perangkat Android, baca Mendukung layar yang berbeda di aplikasi web.
- Gunakan tata letak linier vertikal. Jangan biarkan pengguna men-scroll ke kiri dan ke kanan saat bernavigasi di halaman Anda. Scroll ke atas dan ke bawah lebih mudah bagi pengguna dan membuat halaman Anda lebih sederhana.
- Tetapkan tinggi dan lebar tata letak ke
match_parent. Menetapkan tinggi dan lebar objekWebViewdenganmatch_parentmemastikan tampilan aplikasi Anda memiliki ukuran yang tepat. Kami tidak menyarankan menetapkan tinggi kewrap_contentkarena akan mengakibatkan ukuran yang tidak tepat. Demikian pula, menetapkan lebar tata letak denganwrap_contenttidak didukung dan menyebabkanWebViewAnda menggunakan lebar induknya. Karena perilaku ini, penting juga untuk memastikan bahwa tidak ada objek tata letak induk objekWebViewAnda yang memiliki tinggi dan lebar yang ditetapkan kewrap_content. - Hindari beberapa permintaan file. Karena perangkat seluler biasanya memiliki kecepatan koneksi yang lebih lambat daripada komputer desktop, buat pemuatan halaman Anda secepat mungkin. Salah satu cara untuk mempercepatnya adalah dengan
menghindari pemuatan file tambahan seperti stylesheet dan file skrip dalam
<head>. Selain itu, pertimbangkan untuk melakukan analisis seluler dengan PageSpeed Insights Google untuk mendapatkan saran pengoptimalan mendetail khusus untuk aplikasi Anda. - Nonaktifkan download otomatis favicon jika Anda tidak memerlukannya.
Secara default,
WebViewotomatis mendownload favicon setiap kali situs dikunjungi saat navigasi.WebViewmenyimpan dua salinan setiap favicon yang didownload (satu di Java dan satu di memori native), jadi menonaktifkan download favicon akan menghemat memori (sekitar 8 KB per instanceWebView) dan mengurangi konsumsi bandwidth. Jika aplikasi Anda tidak menggunakan atau menampilkan favicon, gunakanWebSettingsCompat.setDownloadFaviconsEnabled()dari library Jetpack Webkit untuk menonaktifkan download otomatis: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); }
- Mengelola status tersimpan dan menghindari batas transaksi. Jika Anda menyimpan status
WebViewselama peristiwa siklus proses menggunakansaveState(Bundle), terapkan batas ukuran payload menggunakanWebViewCompat.saveState()untuk menghindari melampaui batassavedInstanceState1 MB Android. Untuk informasi selengkapnya, lihat Mengelola status WebView secara efisien. - Mengoptimalkan koneksi jaringan dan pemuatan halaman dengan API pemuatan spekulatif.
Untuk mengurangi latensi navigasi, gunakan API Jetpack Webkit untuk menyiapkan koneksi jaringan dan konten terlebih dahulu.
Panggil
Profile.addQuicHintsuntuk mengisi dukungan HTTP/3 melalui QUIC sebelumnya sehingga WebView dapat menggunakan QUIC segera pada koneksi pertama, dan gunakanProfile.preconnectuntuk memanaskan soket jaringan sebelumnya. Jika URL tujuan diketahui atau mungkin, gunakanProfile.prefetchUrlAsyncatauWebViewCompat.prerenderUrlAsyncuntuk mengambil atau merender halaman di latar belakang. Untuk mengetahui informasi selengkapnya, baca Pemuatan spekulatif di WebView. - Nonaktifkan download otomatis favicon jika Anda tidak memerlukannya.
Secara default,
WebViewotomatis mendownload favicon setiap kali situs dikunjungi saat navigasi.WebViewmenyimpan dua salinan setiap favicon yang didownload (satu di Java dan satu di memori native), jadi menonaktifkan download favicon akan menghemat memori (sekitar 8 KB per instanceWebView) dan mengurangi konsumsi bandwidth. Jika aplikasi Anda tidak menggunakan atau menampilkan favicon, gunakanWebSettingsCompat.setDownloadFaviconsEnabled()dari library Jetpack Webkit untuk menonaktifkan download otomatis: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); }
- Mengelola status tersimpan dan menghindari batas transaksi. Jika Anda menyimpan status
WebViewselama peristiwa siklus proses menggunakansaveState(Bundle), terapkan batas ukuran payload menggunakanWebViewCompat.saveState()untuk menghindari melampaui batassavedInstanceState1 MB Android. Untuk informasi selengkapnya, lihat Mengelola status WebView secara efisien.
Referensi lainnya
- Pemuatan spekulatif di WebView
- Mengelola status WebView secara efisien
- UI Pixel-Perfect di WebView
- Mempelajari Desain Responsif
- Gambar DPI tinggi untuk kepadatan piksel variabel
- Praktik Terbaik Web Seluler
- Mempercepat Web