Android layer type与WebView白屏
在项目中遇到WebView在加载图片的时候会出现白屏的情况,后来在xml设置了WebView属性,问题的到解决:
<WebView android:id="@+id/webview"android:layout_width="fill_parent"android:layout_height="fill_parent"android:layerType="software" android:scrollbars="none" />
在网上也有layer的一些资料:
以下摘自http://blog.csdn.net/a345017062/article/details/7478667
先说说这三个layer。
LAYER_TYPE_SOFTWARE
无论硬件加速是否打开,都会有一张Bitmap(software layer),并在上面对WebView进行软渲染。
好处:
在进行动画,使用software可以只画一次View树,很省。
什么时候不要用:
View树经常更新时不要用。尤其是在硬件加速打开时,每次更新消耗的时间更多。因为渲染完这张Bitmap后还需要再把这张Bitmap渲染到hardware layer上面去。
LAYER_TYPE_HARDWARE
硬件加速关闭时,作用同software。
硬件加速打开时会在FBO(Framebuffer Object)上面做渲染,在进行动画时,View树也只需要画一次。
两者区别:
1、一个是渲染到Bitmap,一个是渲染到FB上。
2、hardware可能会有一些操作不支持。
两者相同:
都是开了一个buffer,把View画到这个buffer上面去。
LAYER_TYPE_NONE
这个就比较简单了,不为这个View树建立单独的layer
PS:GLSurfaceView和WebView默认Layertype都是none。
GLSurfaceView:
给GLSurfaceView设置为software或者hardware后,发现什么也画不出来了。得出结论:GLSurfaceView的Layer type只能是none
WebView:
以前使用WebView时碰到过一个问题,如果在WebView上面使用Animation,WebView的绘画区域不动。当时的解决方案是在进行动画之前对WebView进行截屏(drawingcache)。按上面的道理试了一下,设置一个hardware或者software的layer就OK了。
现在又碰到了另外一个问题,打开硬件加速后,在一些机器上面(我的是3.2)WebView有时会出现某一块区域白屏的问题。默认的layer type是none,改为hardware也不行,设置为software就解决了。当然关闭硬件加速也好了,可是那样的话程序整体就比较慢了。所以最终方案是整体硬件加速,出问题的WebView设置software
补充于2012.4.21:
加上这一句,可以让3D的绘制更快一些:getHolder().setType(SurfaceHolder.SURFACE_TYPE_HARDWARE);
补充于2012.4.22
先说问题:
在硬件加速开启的情况下GLSurfaceView一旦被从View树上摘下来,会使整个窗口背景变黑,即使设置layer type为software也不管用。
经过两天的排查,发现了原因,我的程序是在C层由drawFrame(属于GLThread线程)来驱动进行绘画,当GLSurfaceView被摘下来时,GLSurfaceView的destroy方法被调用,我在destroy方法(属于UI线程)中直接调用 了GLThread线程的结束方法。而GLSurfaceView.creat,sizeChanged,destroyed在UI线程,Render.create,sizeChanged,drawFrame在GLThread线程。因此,出现了UI线程直接调用GLThread线程的方法的问题。最终通过GLSurfaceView.queueEvent向GLThread线程发送Runnable,问题得到解决。
看来,还是软渲染的容错能力比较强,一开硬件加速,底层就比较脆弱了。
结论:一定要搞清楚哪个是UI线程,哪个是GLThread线程。
补上几个寻找问题过程中发现的知识点:
hardware acclerator是对整个窗口进行加速,在硬件加速打开时View.isHardwareAcclerator返回true。但每个View可能被渲染到的Canvas是不同的,比如View可能被通过setLayer设置了Layer,这时,Canvas.isHardwareAccelerator返回false
Android提供了三种硬件加速是否打开的控制级别,分别是Application,Activity,Window,View。这个可以参考Dev Guide
Android layer type与WebView白屏相关推荐
- android 解决华为 SlidingMenu出现白屏
今天,讲讲如何处理 SlidingMenu在华为手机上出现的白屏. 之前做了一个自定义的Monitor,用来播放视频,但是在华为手机上,每次滑动SlideMenu后,Monitor会出现白屏,之 ...
- android打开app白色页面,完美解决Android App启动页有白屏闪过的问题
应用启动的时候有短暂的白屏,如图: 可以通过设置theme的方式来解决 @color/colorPrimary @color/colorPrimaryDark @color/colorAccent t ...
- 安卓 WebView 白屏(记录)
WebView 白屏(布局覆盖错误) 做了一个RecycleView的列表展示,打算点击之后跳转一个网页,之后无论怎么做,Webview 显示的都是白屏. 首先,这个Activity 我是Linear ...
- Android webView白屏问题
在安卓中webview 因为硬件加速,资源获取慢以及其他各种问题都会导致页面白屏 网上找了一堆解决方案 例如,先关闭硬件加速开启软件加速,或者等到加载完成后,webview在OnPageFinish的 ...
- android 7.0 黑屏,Android app启动是出现白屏或者黑屏如何解决?
1.为什么 APP 启动时会出现白屏或者黑屏? 当打开一个 Activity 时,如果这个 Activity 所属的应用还没有在运行,系统会为这个 Activity 所属的应用创建一个进程,但进程的创 ...
- Android APP启动时出现白屏或者黑屏怎么办?
1.为什么APP启动时会出现白屏或者黑屏? 当打开一个Activity时,如果这个Activity所属的应用还没有在运行,系统会为这个Activity所属的应用创建一个进程,但进程的创建与初始化都需要 ...
- WebView白屏优化的一些整理
WebView打开出现白屏和速度慢的一些原因: 1.H5页面运行在独立进程中,H5打开需要首先启动Web进程. 2.每次关闭H5页面会通过exitProcess(0)关闭Web 进程. 优化方案: 1 ...
- Android屏幕适配之解决白屏启动的正确姿势
文章目录 APP启动页的需求 APP启动页的需求的尝试 定义正确的Theme 定义背景图 解决白屏启动的正确姿势 参考Andoid屏幕适配终极手段(小编用过最得劲的dp适配)[https://www. ...
- iOS WebView白屏问题解决方案
原因一 内存暴涨导致白屏,这个时候需要重新加载 //进程终止(内存消耗过大导致白屏) func webViewWebContentProcessDidTerminate(_ webView: WKWe ...
最新文章
- Python笔记总结week3
- 怎样才能找出哪个 CPU 内核正在运行该进程?(一)
- Python简单实现基于VSM的余弦相似度计算
- Hadoop----hdfs的基本操作
- java 3des加密_Java使用3DES加密解密的流程 - 3des加密解密详细解释
- CentOS安装mariadb做为mysql的替代品
- Windows系统管理和网络服务笔记生涯 源于BENET2.0课程(S2)
- 4-2017-12-2-2约瑟夫环
- 全新 ENVI Modeler 遥感建模工具
- 6月29日Java实训第一天
- 为什么PBFT协议中需要Commit阶段
- 原生拨号盘设置电信卡呼叫转移概率失败
- miflash刷机:fastboot模式/保留数据刷机
- JAVA中Object类中的equal方法
- 机器人编程教育培养孩子综合能力
- 使用 Vue3 + elementPlus 做一个每日习惯打卡表
- 2021-07-04
- 测绘类专业计算机要学什么科目,科普下测绘工程专业属于什么门类
- C语言:数组奇偶排序,奇数从小到大,偶数从大到小;输出
- dw图片居中怎么设置_【面试前】css样式垂直/水平/垂直水平居中的方式总结
热门文章
- SVG滤镜+阴影+渐变--学习笔记
- 数据库系统概论②——关系数据库基础
- 云栖科技评论第62期:想象力比雄心更重要
- 计算机应用工程师vs平面设计,计算机专业和平面设计专业是一个专业不?
- Linux命令如何进入screen,linux screen命令基础
- 基于Android13的系统启动流程分析(三)之FirstStageMain阶段
- 馒头,不!月饼引起的惨案
- m3u8手机批量转码_python+ffmpeg,批量转换手机中的m3u8文件
- 4.网格系统、下拉菜单
- 广告业务系统 之 框架沉淀 —— “数据消费型服务框架”