## Mengapakah Android WebView saya berkelakuan buruk? Halaman kosong, gaya tidak responsif, animasi berombak - bagaimana cara saya membetulkannya?

DDD
Lepaskan: 2024-10-26 11:11:02
asal
231 orang telah melayarinya

##  Why is my Android WebView behaving so poorly? Blank pages, unresponsive styles, choppy animations - how do I fix it?

Isu Paparan Web Android: Paparan Kosong, Perubahan Gaya Tidak Responsif dan Animasi Berombak

Android WebView sering berkelakuan tidak menentu, termasuk memaparkan halaman kosong, mengabaikan Perubahan CSS, dan mempamerkan animasi berombak. Isu ini boleh mengecewakan dan menghalang pengalaman pengguna. Nasib baik, terdapat penyelesaian untuk masalah ini, seperti yang akan kita terokai dalam perbincangan ini.

Penyelesaian 1: Dayakan Pecutan Perkakasan

Bermula dengan Android 4.4 (KitKat), perkakasan pecutan adalah penting untuk meningkatkan prestasi WebView. Dalam AndroidManifest.xml anda, dayakan pecutan perkakasan dengan menambahkan baris berikut dalam tag:

<code class="xml"><application
   ...
   android:hardwareAccelerated="true"></code>
Salin selepas log masuk

Penyelesaian 2: Melukis Semula Paksa

Pembolehubah boolean akhir statik dalam kelas WebView membenarkan lukisan semula paparan berterusan. Ini boleh menyelesaikan perubahan gaya tidak responsif dan isu pemaparan kosong. Walau bagaimanapun, menggunakan kaedah ini akan menghabiskan bateri secara berterusan.

Lanjutkan kelas WebView seperti yang ditunjukkan di bawah dan gantikan kaedah onDraw():

<code class="java">import org.apache.cordova.CordovaWebView;

import android.content.Context;
import android.graphics.Canvas;

public class MyWebView extends CordovaWebView {
    public static final String TAG = "MyWebView";

    public MyWebView(Context context) {
        super(context);
    }

    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        // Warning! This will cause the WebView to continuously be redrawn
        // and will drain the devices battery while the view is displayed!
        invalidate();
    }

}</code>
Salin selepas log masuk

Arahkan PhoneGap untuk menggunakan kelas WebView tersuai ini:

<code class="java">public void init(){
    CordovaWebView webView = new MyWebView(MainActivity.this);
    super.init(webView, new CordovaWebViewClient(this, webView), new CordovaChromeClient(this, webView));
}</code>
Salin selepas log masuk

Penyelesaian 3: CrossWalk WebView

Untuk Android versi 4.4 dan lebih baru, CrossWalk menawarkan penggantian WebView drop-in dengan prestasi dan kestabilan yang unggul. Maklumat lanjut boleh didapati di crosswalk-project.org.

Petua Tambahan:

  • Tetapkan keutamaan paparan WebView kepada tinggi: appView.getSettings(). setRenderPriority(RenderPriority.HIGH)
  • Dayakan pemalam atas permintaan: appView.getSettings().setPluginState(WebSettings.PluginState.ON_DEMAND)
  • Gunakan API WebView terkini dan tetapkan API yang disokong minimum yang anda gunakan.
  • Gunakan -webkit-transform: translate3d(0,0,0); kepada pelbagai elemen dalam CSS untuk meningkatkan prestasi.
  • Gunakan kelas tersuai yang memanjangkan WebView dan mengatasi kaedah onDraw() dengan invalidate() untuk memaksa lukisan semula hanya apabila perlu.
  • Dayakan wiki komuniti untuk benarkan orang lain menyumbangkan pengoptimuman kepada jawapan ini.

Atas ialah kandungan terperinci ## Mengapakah Android WebView saya berkelakuan buruk? Halaman kosong, gaya tidak responsif, animasi berombak - bagaimana cara saya membetulkannya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!