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

本文介绍如何在Android Webview中遇到GPU加速问题时,通过添加命令行参数`--force-gpu-rasterization`来强制启用硬件加速,解决低端设备上的性能瓶颈。详细步骤包括创建webview-command-line文件并重启Webview以观察效果。
摘要由CSDN通过智能技术生成

强制开启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

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值