安卓禁用硬件加速_Android硬件加速详解

从Android3.0(API Level 11)开始,支持硬件加速,可充分利用GPU的特性,使得界面渲染更加平滑。

但是硬件加速自身并非完美,在某些Webview版本上,比如Android5初期的一些rom上的Webview版本是chrome37、38版本,由于其本身的硬件加速策略的bug,导致代码稍微给硬件一些压力,就会引发闪屏、花屏等渲染问题。

硬件加速的好处

硬件加速对渲染的流畅度有大幅提升。

在开启硬件加速后,上下拖动列表的感觉是没有跳帧的平滑拖动感,如果没有硬件加速,拖动时能感受到有丢帧。

在窗体切换动画上也类似,硬件加速开关对切换动画的影响很大。

对于video、canvas、webgl,没有硬件加速是没法商用的,Android webview里video标签里的视频如果没有硬件加速会看不到画面。

硬件加速的代价

硬件加速属于双缓冲机制,使用显存进行页面渲染(使用较少的物理内存),导致更频繁的显存操作,可能引起以下现象:

花屏、闪屏、分块渲染;

那么对于开发者,始终要注意降低页面的内存占用,给硬件加速腾出RAM。

具体参考http://ask.dcloud.net.cn/article/12837

硬件加速的开关控制

在5+App可以从两个级别对硬件加速进行控制:

App级别

程序级别开关是设置整个程序是否使用硬件加速,关闭后程序中所有页面将都不可使用硬件加速功能,可通过以下方式操作:

HBuilder中配置的方法

打开应用的manifest.json文件,切换到“代码视图”,在plus->distribute->google节点下添加“hardwareAccelerated”字段:

要开启硬件加速设置值为true,关闭硬件加速则设置值为false。不配置的话默认是auto。

保存提交到App云端打包才能生效。

离线打包配置的方法

打开工程的AndroidManifest.xml文件,切换到代码视图模式,在application节点下修改“android:hardwareAccelerated”属性值:

要开启硬件加速设置值为true,关闭硬件加速则设置值为false。

保存后重新编译即可生效。

Webview窗口级别

除了App级别,还可以对单个Webview控制是否开启硬件加速功能,比如App关闭了硬件加速,但某个webview又打开了硬件加速:

新开Webview窗口是否开启硬件加速

创建Webview窗口时(注意创建完毕再修改无效),可设置WebviewStyle参数的hardwareAccelerated属性值控制是否开启硬件加速:

var styles = {hardwareAccelerated:true}; // true表示开启Webview的硬件加速,false表示关闭Webview的邮件加速

var webview = plus.webview.create( "url", "id", styles );

webview.show();

设置首页webview是否开启硬件加速

上面的新开webview时设置硬件加速对首页是无效的,因为首页不是js创建的。首页webview的硬件加速单独配置需要在manifest里进行。

注意此配置与全局设置不同,虽然都在manifest配置,但此配置仅是对首页生效的,并非全局App的硬件加速配置。

打开应用的manifest.json文件,切换到“代码视图”,在plus节点下添加“hardwareAccelerated”字段:

设置值为true表示开启硬件加速,false表示关闭硬件加速。

关于硬件加速默认的auto值的说明,即不同平台上5+runtime默认开启或关闭硬件加速的策略

参考:http://ask.dcloud.net.cn/article/12830

可以通过5+ API查询Webview默认硬件加速是否开启

但注意此api即defauleHardwareAccelerated,是我们的引擎的默认策略查询,开发者手动打开硬件加速后,并不会更改这个值。

检测硬件加速是否开启,一方面看上下滑动的流畅度,另一种方法是放一个video标签,看看视频是否有画面。

关闭硬件加速时,如果想播放视频,有2种方案:

对播放视频的webview单独开硬件加速,创建这个webview时参考上面的方法开启硬件加速。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/340610.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mac svn工具_程序员或产品经理,这些Mac的效率工具一定不要错过

工欲善其事必先利其器!用好工具能很大的提高我们的工作效率,尤其是程序员和产品经理等。今天给大家介绍一些好用的工具随时记下闪现的灵感人的一天中大脑会产生大约6万个想法, 其中有不少优秀的 idea. 如果我们能学会捕捉哪怕是部分灵感, 也将会收获巨大. 因此工作中…

案例 github_github 项目搜索技巧-让你更高效精准地搜索项目

作者:Suwanbinwww.cnblogs.com/suwanbin/p/12113751.htmlgithub 搜索技巧参考自 B站 up 主 CodeSheep 的视频【如何高效地在网上找开源项目做!在职程序员实际演示一波视频教程操作】,然后写着写着一好奇就去看文档了现在这篇博客相当于官方文…

使用Spring和JSR 303进行方法参数验证

Spring提供了一种使用JSR 303 bean验证来验证方法参数的简便方法。 在这篇文章中,我们将看到如何使用此功能。 设定 首先,我们需要通过创建MethodValidationPostProcessor bean添加对方法参数验证的支持: Configuration public class MyCon…

想要导航提示直接进入_北斗导航已开始提供全球服务,你的手机怎样连接北斗?...

如果你是新朋友,请点击上方的蓝色字 关注 “高科技爱好者”,保证不会让你失望的.自从北斗导航全球组网成功后,开始向全球提供导航服务,关于北斗导航的话题就没有断过,最常听到的两个话题:北斗收费吗&#x…

python3异步协程爬虫_Python实现基于协程的异步爬虫

Python实现基于协程的异步爬虫一、课程介绍1. 课程来源本课程核心部分来自《500 lines or less》项目,作者是来自 MongoDB 的工程师 A. Jesse Jiryu Davis 与 Python 之父 Guido van Rossum。项目代码使用 MIT 协议,项目文档使用 http://creativecommons…

python中变量的类型是动态的随时可以变化_python动态类型简介

1、a [1,2,3]其中a是变量名,[1,2,3]是对象,a通过一个指向[1,2,3]的指针引用了对象[1,2,3].2、每一个对象都有两个标准的头部信息,一个是标示这个对象的类型。另外一个是用来决定是不是可以回收这个对象。3、类型属于对象,而不属于…

jpa和hibernate_从JPA到Hibernate的旧版和增强型标识符生成器

jpa和hibernateJPA标识符生成器 JPA定义了以下标识符策略: 战略 描述 汽车 持久性提供程序选择基础数据库支持的最合适的标识符策略 身份 标识符由数据库IDENTITY列分配 序列 持久性提供程序使用数据库序列来生成标识符 表 持久性提供程序使用单独的数据库…

去掉前后空格_mysql批量去掉某个字段字符中的空格

mysql有什么办法批量去掉某个字段字符中的空格?不仅是字符串前后的空格,还包含字符串中间的空格,答案是 replace,使用mysql自带的 replace 函数,另外还有个 trim 函数。 (1)mysql replace 函数 …

python自己做个定时器_技术图文:如何利用 Python 做一个简单的定时器类?

原标题:技术图文:如何利用 Python 做一个简单的定时器类?背景今天在B站上看有关 Python 最火的一个教学视频 -- “零基础入门学习 Python”,这也是我们 Python基础刻意练习活动 的推荐视频教程。python视频在学习魔法方法的时候&a…

成为Java流大师–第6部分:使用流创建新的数据库应用程序

您是否曾经想开发数据库应用程序的“快速”版本? 在此动手实验文章中,您将学习一种真正简单而直接的方法。 整个Java域模型将自动为您生成。 您只需连接到现有数据库,然后开始使用Java流进行开发。 例如,您将能够在几分钟内为您现…

快速排序 挖坑_由浅入深玩转快速排序算法

由浅入深玩转快速排序算法快速排序可以说是最快的通用排序算法,它甚至被誉为20世纪科学和工程领域的十大算法之一。在众多排序算法中其无论是时间复杂度还是空间复杂度都颇具优势。作为开发工程师,我们很有必要了解它的思想。接下来将由在下为大家一步步…

代码拾取图片某一点的颜色_RPG游戏开发日志7:道具拾取与存放

本项目同步上传于github和coding上,国内读者可以通过在coding下载项目。也欢迎你加入我的UE4学习交流QQ群:872537977。如果你喜欢我写的文章,也希望你点赞、收藏、转发。谢谢!如果你喜欢我写的文章,也希望你点赞、收藏…

使用sstableloader恢复Cassandra Priam备份

之前,我曾写过关于设置Cassandra和Priam进行备份和集群管理的文章。 但是,我在此处提供的用于备份还原的示例并不适用于所有情况,例如,它可能不适用于完全独立的群集。 或者在部分还原到一个表而不是整个数据库的情况下。 在这种…

abp vue如何配置服务地址_DHCP服务如何配置才能尽量减少被攻击的可能

DHCP Snooping是啥?DHCP Snooping是DHCP的一种安全特性,用来保证DHCP客户端能够正确的从DHCP服务器获取IP地址,防止网络中针对DHCP的攻击。DHCP Snooping是如何防止DHCP攻击的呢?DHCP,动态主机配置协议,在I…

通达信缠论买卖点公式_通达信缠论多空主图指标公式

1.高位无量就拿,就算拿错了也要拿着。高位就是说股价处于或者接近历史的最高位。高位无量横盘,是非常典型的上涨中继形态之一,高位的窄幅箱型振荡。2.高位放量出现就要跑,哪怕是跑错也要跑。股价在已经过了一段时间比较大的涨幅后&#xff0c…

python服务器搭建 实战_实战讲解:如何用Python搭建一个服务器

有人说表示只学Python没有用,必须学会一个框架(比如Django和web.py)才能找到工作。其实掌握一个类似于框架的高级工具是有用的,但是基础的东西可以让你永远不被淘汰,不要被工具限制了自己的发展。今天不使用框架,也不使用Python标…

多节锂电串联保护板ic_如何有效保护锂电池板,一款优质的MOS管就能解决

锂电池几乎应用于我们日常接触到的各类电器之中,但如何保护锂电池,你又是否知道呢?其实在锂电池保护板,最主要的元器件是IC与MOS。MOS对锂电池板的保护作用非常大,它可以检测过充电,检测过放电,…

使用Java 8 Lambda表达式将实体映射到DTO

当我们需要将DTO转换为实体(Hibernate实体等)并向后转换时,我们都会面临混乱的开销代码。 在我的示例中,我将用Java 8演示代码如何变得越来越短。 让我们创建目标DTO: public class ActiveUserListDTO {public Acti…

使用pp架构形成计算机集群请求的地址无效_干货!史上最详细脑图《大型网站技术架构》...

1. 介绍一下《大型网站技术架构》这本书可能很多人都看过,小编个人觉得真的是非常不错的一本书。看完这本书后,你会对如何设计大型网站架构,有非常清晰的思路。如果还没有读过的小伙伴,赶紧去读一读吧。PS:小编这里有这…

linux 启动rsyslog服务_linux rsyslog服务部署

软件安装在centos7,rsyslog默认安装,重点在于配置文件。[rootlocalhost samba]# vim /etc/rsyslog.conf$ModLoad imuxsock # provides support for local system logging (e.g. via logger command)$ModLoad imjournal # provides access to the systemd…