Saya android webviews
lambat. Ini ada di segalanya, mulai dari ponsel hingga 3.0+
tablet dengan spesifikasi lebih dari cukup
Saya tahu bahwa tampilan web seharusnya "terbatas" tetapi saya melihat aplikasi web dilakukan dengan celah telepon yang harus menggunakan semua jenis CSS3
dan JQuery
sihir, semuanya berjalan dengan baik dan cepat
jadi saya kehilangan sesuatu, adakah myWebview.SPEEDHACK(1)
yang bisa saya gunakan untuk mempercepat?
juga, kadang-kadang isi dari tampilan web saya hanya tidak memuat, bukannya memuat perlahan, itu hanya tidak memuat. Aset yang saya uji disimpan secara lokal, tidak ada kesalahan.
Jawaban:
Itu tergantung pada aplikasi web yang sedang dimuat. Cobalah beberapa pendekatan di bawah ini:
Tetapkan prioritas render yang lebih tinggi (ditinggalkan dari API 18+):
Aktifkan / nonaktifkan akselerasi perangkat keras:
Nonaktifkan cache (jika Anda memiliki masalah dengan konten Anda):
sumber
Menambahkan ini
android:hardwareAccelerated="true"
dalam manifes adalah satu-satunya hal yang secara signifikan meningkatkan kinerja bagi sayaInfo lebih lanjut di sini: http://developer.android.com/guide/topics/manifest/application-element.html#hwaccel
sumber
android:hardwareAccelerated="true"
animasi 3D CSS, ada penundaan yang lama sebelum dimulai, menggulirkan DIV di dalam DIV yang dapat digulir lainnya tidak berfungsi, dan aplikasinya lebih tidak stabil.Solusi bagi kami adalah sebaliknya. Kami menonaktifkan akselerasi perangkat keras hanya pada WebView (bukan pada seluruh aplikasi dalam manifes) dengan menggunakan kode ini:
Animasi CSS3 lebih lancar sekarang. Kami menggunakan Android 4.0.
Info lebih lanjut di sini: https://code.google.com/p/android/issues/detail?id=17352
sumber
WebView not displayed because it is too large to fit into a software layer (or drawing cache), needs 11534400 bytes, only 8294400 available
Saya pikir yang berikut ini berfungsi paling baik:
Android 19 memiliki mesin Chromium untuk WebView. Saya kira itu bekerja lebih baik dengan akselerasi perangkat keras.
sumber
Saya mengalami masalah yang sama dan saya harus mengatasinya. Saya mencoba solusi ini, tetapi pada akhirnya kinerjanya, setidaknya untuk scrolling tidak membaik sama sekali. Jadi, inilah workaroud yang saya lakukan dan penjelasan mengapa itu berhasil bagi saya.
Jika Anda memiliki kesempatan untuk menjelajahi acara seret, hanya sedikit, dengan membuat kelas "MiWebView", menimpa metode "onTouchEvent" dan setidaknya mencetak waktu di mana setiap peristiwa seret terjadi, Anda akan melihat bahwa mereka dipisahkan dalam waktu untuk (turun ke) 9ms jauhnya. Itu adalah waktu yang sangat singkat di antara berbagai peristiwa.
Lihatlah Kode Sumber WebView , dan lihat saja fungsi onTouchEvent. Tidak mungkin untuk ditangani oleh prosesor dalam waktu kurang dari 9ms (Teruslah bermimpi !!!). Itu sebabnya Anda terus-menerus melihat "Miss a drag saat kami menunggu respons WebCore untuk mendarat." pesan. Kode tidak bisa ditangani tepat waktu.
Bagaimana memperbaikinya? Pertama, Anda tidak dapat menulis ulang kode onTouchEvent untuk memperbaikinya, terlalu banyak. Tapi, Anda bisa "mengejeknya" untuk membatasi laju acara untuk menyeret gerakan, misalnya 40ms atau 50ms. (ini tergantung pada prosesor).
Semua acara sentuh seperti ini: ACTION_DOWN -> ACTION_MOVE ...... ACTION_MOVE -> ACTION_UP. Jadi kita perlu menjaga gerakan BAWAH dan ATAS dan memfilter tingkat MOVE (ini adalah orang jahat).
Dan di sini adalah cara untuk melakukannya (Anda dapat menambahkan lebih banyak jenis acara seperti sentuhan 2 jari, yang saya tertarik di sini adalah pengguliran satu jari).
Tentu saja Gunakan kelas ini sebagai ganti WebView dan Anda akan melihat perbedaannya saat menggulir.
Ini hanya pendekatan untuk solusi, namun masih belum sepenuhnya diterapkan untuk semua kasus lag karena menyentuh layar saat menggunakan WebView. Namun itu adalah solusi terbaik yang saya temukan, setidaknya untuk kebutuhan spesifik saya.
sumber
Saya mencoba semua proposal untuk memperbaiki masalah kinerja render di aplikasi phonegap saya. Tapi tidak ada yang benar-benar berhasil.
Akhirnya, setelah seharian mencari, saya berhasil. Saya menetapkan dalam tag (bukan tag) dari AndroidManifest saya
Sekarang aplikasi berperilaku dengan cara yang sama cepat seperti browser web saya. Sepertinya, jika akselerasi perangkat keras tidak selalu merupakan fitur terbaik ...
Masalah terperinci yang saya miliki: https://stackoverflow.com/a/24467920/3595386
sumber
Tidak ada jawaban yang tidak membantu bagi saya.
Akhirnya saya menemukan alasan dan solusi. Alasannya adalah banyak filter CSS3 (filter, -webkit-filter).
Larutan
Saya telah menambahkan deteksi WebView dalam skrip halaman web untuk menambahkan kelas "rendah kualitas" ke tubuh HTML. BTW. Anda dapat dengan mudah melacak WebView dengan mengatur agen-pengguna di pengaturan WebView. Kemudian saya membuat aturan CSS baru
sumber
Jika hanya ada beberapa komponen tampilan web Anda yang lambat atau lambat, coba tambahkan ini ke elemen css:
Ini adalah satu-satunya speedhack yang benar-benar berpengaruh pada tampilan web saya. Tapi hati-hati jangan sampai berlebihan! (Anda dapat membaca lebih lanjut tentang retas di artikel ini .)
sumber
will-change: transform
.Coba ini:
sumber
Jika Anda mengikat ke
onclick
acara tersebut, itu mungkin lambat di layar sentuh.Untuk membuatnya lebih cepat, saya menggunakan fastclick , yang menggunakan acara sentuh yang jauh lebih cepat untuk meniru acara klik.
sumber
$('#').on('touchstart', function() {...});
sebagai lawan dari onclick