开启硬件加速 导致花屏问题 OpenGlRenderer 0x506 解决办法

(150114_17:08:32.461)I/dalvikvm-heap(  850): Grow heap (frag case) to 10.342MB for 2457616-byte allocation
(150114_17:08:32.542)D/dalvikvm(  850): GC_FOR_ALLOC freed 20K, 25% free 10530K/14040K, paused 34ms, total 34ms
(150114_17:08:32.551)D/dalvikvm(  850): GC_CONCURRENT freed 7K, 26% free 10524K/14040K, paused 1ms+5ms, total 24ms
(150114_17:08:32.551)D/OpenGLRenderer(  850): GL error from OpenGLRenderer: 0x506

android4.2版定制的Launcher, 有几率出现应用整个绘制成花屏、黑屏或者字体绘制成方块等问题,出现花屏问题的时候出现以上LOG

解决办法:

当View 调用destroyLayer()的时候判断如果当前的硬件加速不可用的时候,调用mHardwareRenderer的safelyRun来删除mHardwareLayer的资源

修改View.java destroyLayer(boolean valid)方法

boolean destroyLayer(boolean valid) {
        if (mHardwareLayer != null) {
            AttachInfo info = mAttachInfo;
            if (info != null && info.mHardwareRenderer != null &&
                    info.mHardwareRenderer.isEnabled() &&
                    (valid || info.mHardwareRenderer.validate())) {

                info.mHardwareRenderer.cancelLayerUpdate(mHardwareLayer);
                mHardwareLayer.destroy();
                mHardwareLayer = null;

                invalidate(true);
                invalidateParentCaches();
            }
            else if(info != null && info.mHardwareRenderer != null)
            {
            	info.mHardwareRenderer.safelyRun(new Runnable() {

					@Override
					public void run() {
						// TODO Auto-generated method stub
						mHardwareLayer.destroy();
						mHardwareLayer = null;
						if (mDisplayList != null)
							 mDisplayList.reset(); 

						 invalidate(true);
			             invalidateParentCaches();
						 }
					});
            }
            return true;
        }
        return false;
    }

附上代码优化方案http://zuiniuwang.blog.51cto.com/3709988/721798/

时间: 2024-11-13 18:13:38

开启硬件加速 导致花屏问题 OpenGlRenderer 0x506 解决办法的相关文章

用CSS开启硬件加速来提高网站性能(转)

用CSS开启硬件加速来提高网站性能(转) 翻译文章,原文地址:http://blog.teamtreehouse.com/increase-your-sites-performance-with-hardware-accelerated-css. 你知道我们可以在浏览器中用css开启硬件加速,使GPU (Graphics Processing Unit) 发挥功能,从而提升性能吗? 现在大多数电脑的显卡都支持硬件加速.鉴于此,我们可以发挥GPU的力量,从而使我们的网站或应用表现的更为流畅. 在桌

用CSS开启硬件加速来提高网站性能

你知道我们可以在浏览器中用css开启硬件加速,使GPU (Graphics Processing Unit) 发挥功能,从而提升性能吗? 现在大多数电脑的显卡都支持硬件加速.鉴于此,我们可以发挥GPU的力量,从而使我们的网站或应用表现的更为流畅. 在桌面端和移动端用CSS开启硬件加速 CSS animations, transforms 以及 transitions 不会自动开启GPU加速,而是由浏览器的缓慢的软件渲染引擎来执行.那我们怎样才可以切换到GPU模式呢,很多浏览器提供了某些触发的CS

Android不同层次开启硬件加速的方式(转)

在Android中,可以四给不同层次上开启硬件加速: 1.应用:<application android:hardwareAccelerated="true"> 2.Activity<activity android:hardwareAccelerated="true">3.WindowgetWindow().setFlags(WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED, Wind

电脑死机、蓝屏、黑屏、报错解决办法

电脑死机.蓝屏.黑屏.报错解决办法 1.ctrl+alt+delete,打开任务管理器,选择关机-重新启动,如果不行接着看. 2.长按电源5秒钟,强制关机,(因为可能是CPU过热,它需要凉快一下),在正常开机,如果不行接着看. 3.长按电源5秒钟,强制关机,开机,按F8,选择最后一次正常启动,如果不行接着看. 4.长按电源5秒钟,强制关机,开机,按F8,选择进入安全模式,如果不行接着看. 5.如果电脑好了,那么在重新启动,确定电脑完全好了,在进安全模式全盘杀毒,如果又打不开了,那么接着看. 6.

[Android学习笔记]ListView中含有Button导致无法响应onItemClick回调的解决办法

转自:http://www.cnblogs.com/eyu8874521/archive/2012/10/17/2727882.html 问题描述: 当ListView的Item中的控件只是一些展示类控件时(比如TextView),注册ListView的监听setOnItemClickListener之后,当点击Item时候会触发onItemClick回调. 但是,当Item中存在Button(继承于Button)的控件时,onItemClick回调不会被触发. 解决方案: 在Item的布局文件

QQ文件没有读取权限,60017导致QQ无法登陆的终极解决办法

每隔一段时间,我的QQ就无法登陆,提示:QQ文件没有读取权限,60017导致QQ无法登陆的终极解决办法 点击了解详情发现里面的解决办法根本不起作用,网上 说的各种解决办法都不起作用,解决办法如下 1.右键QQ图标--->2.点击兼容性--->3.勾选兼容模式的框,点击应用和确定,再次登陆,点击弹出框的是登陆,问题解决.

android - Lint Error Checking导致的无法打包问题的解决办法

Export aborted because fatal lint errors were found.These are listed in the Problems view.Either fix these before running Export again,or turn off "Run full error check when exporting app" in the Android > Lint Error checking preference page.

Win10重命名文件夹导致资源管理器卡顿的解决办法

我本机使用的是 Win10 1607,不清楚是因为什么原因导致重命名文件夹时资源管理器会被卡死,找了很长时间终于找到了解决办法,现在我把步骤粘出来以便后续遇到相同问题的朋友能及时解决. 其实操作很简单,只需要简单的三步: 1. 打开任意文件夹 2. 点击左上角菜单栏中的"文件"按钮,选择"更改文件夹和搜索选项",如下图所示: 3. 在弹出的文件夹选项窗口中,依次点击"清除文件资源管理器历史记录"后的"清除"按钮和"还

android 当ListView滚动时自动调用 onCheckedChanged 导致CheckBox 状态不停变化 的解决办法

今天在做一个含有CheckBox 的ListView时,发现当初始化CheckBox的状态后, 滚动ListView,其中CheckBox 的选中状态不停的发生变化.最后发现原因是 ListView滚动时自动调用 onCheckedChanged 导致的.在查看了各种博客的解决办法后,国外的网站上有一个办法解决了我的问题.写下来分享一下. 在自定义Adapter的getView方法中这样写就行了. Java代码   //在初始化CheckBox状态和设置状态变化监听事件之前,先把状态变化监听事件