Release bitmaps from android.view.GLES20DisplayList

孤人 提交于 2019-12-03 04:38:41

问题


Is anyone knows how to Release bitmaps from android.view.GLES20DisplayList. And why it keeps them alive even if you clean, let's say, ImageView manually? Or maybe there is a way to disable GLES20DisplayList, tried to use android:hardwareAccelerated="false" in AndroidManifest, still no luck.

Looks like affected only in 4.2(1)

update: looks like you can't disable hardware acceleration on 4.2.1 (bug?)

simple test:

Android manifest:
application ... android:hardwareAccelerated="false"

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

result:

12-06 17:15:27.129: I/System.out(30752): isHardwareAccelerated: true
12-06 17:15:27.129: I/System.out(30752): isHardwareAccelerated: true

回答1:


This seems to be a memory leak in 4.2. Looks like this fix is intended against it: https://android.googlesource.com/platform/frameworks/base/+/034de6b1ec561797a2422314e6ef03e3cd3e08e0

I disabled hardware acceleration in the manifest for 4.2 for the activity where I encountered this problem, this helped with android.view.GLES20DisplayList memory holding.

In the manifest for activity: android:hardwareAccelerated="@bool/gpu_enabled"

In values.xml for v17:

<bool name="gpu_enabled">false</bool>   

In default values.xml, I set it to true.




回答2:


I recently did an in-depth memory analysis regarding this issue. As Yulia pointed out above, disabling hardware acceleration would do the trick in general. Alternatively, you can set the ImageView’s Drawable to null, recycle the bitmap, or detach the ImageView as you pointed out.

However, depending on the API version, the bitmap memory may or may not be released from GLES20DisplayList. I discussed these different behaviors and possible solutions in-depth on my blog post – Android Bitmap Memory Analysis, but the quick solution would be to disable hardware acceleration.



来源:https://stackoverflow.com/questions/13754876/release-bitmaps-from-android-view-gles20displaylist

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!