首页 > web前端 > css教程 > ## 为什么我的 Android WebView 表现如此糟糕?空白页面、无响应的样式、断断续续的动画 - 如何解决?

## 为什么我的 Android WebView 表现如此糟糕?空白页面、无响应的样式、断断续续的动画 - 如何解决?

DDD
发布: 2024-10-26 11:11:02
原创
335 人浏览过

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

Android WebView 问题:空白渲染、无响应的样式更改和断断续续的动画

Android WebView 经常表现不稳定,包括显示空白页面、忽略CSS 发生变化,并呈现出断断续续的动画。这些问题可能会令人沮丧并影响用户体验。幸运的是,这些问题有解决方案,我们将在本次讨论中探讨。

解决方案 1:启用硬件加速

从 Android 4.4 (KitKat) 开始,硬件加速对于提高 WebView 性能至关重要。在 AndroidManifest.xml 中,通过在 中添加以下行来启用硬件加速:标签:

<code class="xml"><application
   ...
   android:hardwareAccelerated="true"></code>
登录后复制

解决方案 2:强制重绘

WebView 类中的静态最终布尔变量允许不断重绘视图。这可以解决样式更改无响应和空白渲染问题。但是,使用此方法会持续耗尽电池电量。

如下所示扩展 WebView 类并重写 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>
登录后复制

指示 PhoneGap 使用此自定义 WebView 类:

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

解决方案 3:CrossWalk WebView

对于 Android 4.4 及更高版本,CrossWalk 提供了具有卓越性能和稳定性的直接 WebView 替代品。更多信息请访问 crosswalk-project.org。

其他提示:

  • 将 WebView 渲染优先级设置为高:appView.getSettings()。 setRenderPriority(RenderPriority.HIGH)
  • 按需启用插件:appView.getSettings().setPluginState(WebSettings.PluginState.ON_DEMAND)
  • 使用最新的 WebView API 并将支持的最低 API 设置为您正在使用的一个。
  • 应用 -webkit-transform:translate3d(0,0,0); CSS 中的各种元素以提高性能。
  • 使用扩展 WebView 的自定义类并使用 invalidate() 覆盖 onDraw() 方法,以仅在必要时强制重绘。
  • 启用社区 wiki允许其他人对此答案做出优化。

以上是## 为什么我的 Android WebView 表现如此糟糕?空白页面、无响应的样式、断断续续的动画 - 如何解决?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板