强制开启Android Webview GPU 加速的方法

您所在的位置:网站首页 启动多线程webview对手机的影响 强制开启Android Webview GPU 加速的方法

强制开启Android Webview GPU 加速的方法

#强制开启Android Webview GPU 加速的方法| 来源: 网络整理| 查看: 265

强制开启Android Webview GPU 加速的方法 常用方法

浏览器开启GPU加速可以让渲染的性能更好,可以有效的利用硬件的能力来提高页面的绘制帧率。在安卓平台使用webview的场景下,开发人员通常会通过以下两种方法来让webview使用硬件加速能力来渲染页面。

方法一:

在应用的启动配置中,添加 android:hardwareAccelerated="true"配置,如下图所示:

请添加图片描述

方法二:

通过在webview初始化的方法中使用如下代码:

wv.setLayerType(View.LAYER_TYPE_HARDWARE, null);

以上两种方法在绝大部分的设备上都可以生效,当我们用chrome提供的远程调试工具调试webview打开的页面,并将fps看板显示出来时,我们可以看到上面显示了GPU Raster处于启用状态,如下图所示:

请添加图片描述

但是在一些小众机型或安卓系统中,这两个方法无法生效,FPS面板会显示GPU Raster处于关闭状态,从而导致网页上的一些动画使用CPU来绘制,因此非常卡顿,帧率也非常低。如下图所示:

请添加图片描述

既然上述两种常用的方法无法生效,那么有没有其它办法可以解决呢?

命令行参数

遇到这个问题的时候,联想到了chrome app在启动时可以通过传入命令行参数

-force-gpu-rasterization

来强制开启GPU Raster,那么webview组件能不能用同样的方法呢?在webview的官网文档中遨游了一段时间后发现是有的。

Android webview在启动时,会去 /data/local/tmp/ 目录下找到一个名为 webview-command-line 的文件,并读取里面的内容作为启动参数,并且文件内容中的参数形式与chrome app是相同的。因此,我们通过在该文件中写入命令行参数的方式来实现,如下:

cd /data/local/tmp touch webview-command-line echo '_ --force-gpu-rasterization' > webview-command-line

完成写入后重启webview,打开网页查看FPS面板:

请添加图片描述

可以从图中看到GPU Raster已经被开启,帧率也上到了43FPS。

相关资料:

Commandline flags

CommandLineUtil

run-chromium-with-flags

How to get GPU Rasterization - The Chromium Projects



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3