Rumah  >  Artikel  >  hujung hadapan web  >  ## Mengapakah Android WebView saya berkelakuan buruk? Halaman kosong, gaya tidak responsif, animasi berombak - bagaimana cara saya membetulkannya?

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

DDD
DDDasal
2024-10-26 11:11:02227semak imbas

##  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>

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>

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>

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!

Kenyataan:
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