首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从android.view.GLES20DisplayList发布位图

从android.view.GLES20DisplayList发布位图
EN

Stack Overflow用户
提问于 2012-12-07 00:04:27
回答 2查看 3K关注 0票数 7

任何人都知道如何从android.view.GLES20DisplayList发布位图。为什么它能让它们存活,即使你打扫干净,比方说,手动的ImageView?或者有一种方法可以禁用GLES20DisplayList,尝试在AndroidManifest中使用android:hardwareAccelerated="false“,但仍然没有成功。

似乎只在4.2(1)中受影响

更新:看起来无法在4.2.1上禁用硬件加速(bug?)

简单测试:

代码语言:javascript
复制
Android manifest:
application ... android:hardwareAccelerated="false"

System.out.println("isHardwareAccelerated: " + mListView.isHardwareAccelerated());
mListView.setLayerType(LAYER_TYPE_SOFTWARE, null);
System.out.println("isHardwareAccelerated: " + mListView.isHardwareAccelerated());

结果:

代码语言:javascript
复制
12-06 17:15:27.129: I/System.out(30752): isHardwareAccelerated: true
12-06 17:15:27.129: I/System.out(30752): isHardwareAccelerated: true
EN

回答 2

Stack Overflow用户

发布于 2013-01-10 12:45:42

这似乎是4.2中的内存泄漏。看起来这个修复是针对它的:https://android.googlesource.com/platform/frameworks/base/+/034de6b1ec561797a2422314e6ef03e3cd3e08e0

对于遇到此问题的活动,我在清单4.2中禁用了硬件加速,这有助于保持android.view.GLES20DisplayList内存。

在活动清单中:android:hardwareAccelerated="@bool/gpu_enabled"

在values.xml for v17中:

代码语言:javascript
复制
<bool name="gpu_enabled">false</bool>   

在默认的values.xml中,我将其设置为true。

票数 3
EN

Stack Overflow用户

发布于 2014-03-10 05:59:11

我最近对这个问题做了深入的记忆分析。正如Yulia在上面指出的那样,禁用硬件加速在一般情况下是可行的。或者,您可以将ImageView的绘图设置为null、回收位图或如您所指出的那样分离ImageView。

但是,根据API版本的不同,位图内存可能从GLES20DisplayList中释放,也可能不被释放。我在我的博客帖子- Android位图内存分析上深入讨论了这些不同的行为和可能的解决方案,但是快速的解决方案是禁用硬件加速。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13754876

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档