Heim  >  Artikel  >  Web-Frontend  >  ## Warum verhält sich mein Android WebView so schlecht? Leere Seiten, nicht reagierende Stile, abgehackte Animationen – wie kann ich das beheben?

## Warum verhält sich mein Android WebView so schlecht? Leere Seiten, nicht reagierende Stile, abgehackte Animationen – wie kann ich das beheben?

DDD
DDDOriginal
2024-10-26 11:11:02314Durchsuche

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

Probleme mit Android WebView: leeres Rendering, nicht reagierende Stiländerungen und abgehackte Animationen

Android WebView verhält sich häufig unregelmäßig, einschließlich der Anzeige leerer Seiten und des Ignorierens CSS-Änderungen und abgehackte Animationen. Diese Probleme können frustrierend sein und das Benutzererlebnis beeinträchtigen. Glücklicherweise gibt es Lösungen für diese Probleme, wie wir in dieser Diskussion untersuchen werden.

Lösung 1: Hardwarebeschleunigung aktivieren

Ab Android 4.4 (KitKat), Hardware Beschleunigung ist entscheidend für die Verbesserung der WebView-Leistung. Aktivieren Sie in Ihrer AndroidManifest.xml die Hardwarebeschleunigung, indem Sie die folgende Zeile innerhalb des hinzufügen. tag:

<code class="xml"><application
   ...
   android:hardwareAccelerated="true"></code>

Lösung 2: Neuzeichnen erzwingen

Eine statische letzte boolesche Variable in der WebView-Klasse ermöglicht ein ständiges Neuzeichnen der Ansicht. Dadurch können nicht reagierende Stiländerungen und leere Rendering-Probleme behoben werden. Die Verwendung dieser Methode entlädt jedoch kontinuierlich den Akku.

Erweitern Sie die WebView-Klasse wie unten gezeigt und überschreiben Sie die onDraw()-Methode:

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

Weisen Sie PhoneGap an, diese benutzerdefinierte WebView-Klasse zu verwenden:

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

Lösung 3: CrossWalk WebView

Für Android-Versionen 4.4 und höher bietet CrossWalk einen Drop-in-WebView-Ersatz mit überlegener Leistung und Stabilität. Weitere Informationen finden Sie unter crosswalk-project.org.

Zusätzliche Tipps:

  • Setzen Sie die WebView-Renderpriorität auf hoch: appView.getSettings(). setRenderPriority(RenderPriority.HIGH)
  • Plugins bei Bedarf aktivieren: appView.getSettings().setPluginState(WebSettings.PluginState.ON_DEMAND)
  • Verwenden Sie die neueste WebView-API und legen Sie die minimal unterstützte API auf fest eine, die Sie verwenden.
  • Apply -webkit-transform: translator3d(0,0,0); auf verschiedene Elemente in CSS, um die Leistung zu verbessern.
  • Verwenden Sie eine benutzerdefinierte Klasse, die WebView erweitert und die onDraw()-Methode mit invalidate() überschreibt, um ein Neuzeichnen nur bei Bedarf zu erzwingen.
  • Aktivieren Sie das Community-Wiki Erlauben Sie anderen, Optimierungen zu dieser Antwort beizutragen.

Das obige ist der detaillierte Inhalt von## Warum verhält sich mein Android WebView so schlecht? Leere Seiten, nicht reagierende Stile, abgehackte Animationen – wie kann ich das beheben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn