Android的消息"无法生成的纹理从位图" [英] Android message "Cannot generate texture from bitmap"

查看:155
本文介绍了Android的消息"无法生成的纹理从位图"的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正与画廊,小部件和大量位图。 擦除位图我用Bitmap.recycle()。作为结果,我对明年的logcat看到消息话题:

I'm working with Gallery-widget and a lot of bitmaps. For erasing bitmaps I use Bitmap.recycle(). As result I see on logcat next messsage:

08-18 17:49:26.020: INFO/dalvikvm-heap(13847): Grow heap (frag case) to 22.373MB for 2457616-byte allocation
08-18 17:49:26.060: DEBUG/dalvikvm(13847): GC_FOR_ALLOC freed 1K, 36% free 22835K/35143K, paused 27ms
08-18 17:49:26.230: DEBUG/dalvikvm(13847): GC_CONCURRENT freed <1K, 36% free 22835K/35143K, paused 2ms+3ms
08-18 17:49:28.070: ERROR/OpenGLRenderer(13847): Cannot generate texture from bitmap
08-18 17:49:28.080: ERROR/OpenGLRenderer(13847): Cannot generate texture from bitmap
08-18 17:49:28.110: ERROR/OpenGLRenderer(13847): Cannot generate texture from bitmap
08-18 17:49:28.120: ERROR/OpenGLRenderer(13847): Cannot generate texture from bitmap
08-18 17:49:28.140: ERROR/OpenGLRenderer(13847): Cannot generate texture from bitmap
08-18 17:49:28.160: ERROR/OpenGLRenderer(13847): Cannot generate texture from bitmap
08-18 17:49:28.180: ERROR/OpenGLRenderer(13847): Cannot generate texture from bitmap
08-18 17:49:28.190: ERROR/OpenGLRenderer(13847): Cannot generate texture from bitmap
08-18 17:49:28.210: ERROR/OpenGLRenderer(13847): Cannot generate texture from bitmap
08-18 17:49:28.230: ERROR/OpenGLRenderer(13847): Cannot generate texture from bitmap
08-18 17:49:28.240: ERROR/OpenGLRenderer(13847): Cannot generate texture from bitmap
08-18 17:49:28.260: ERROR/OpenGLRenderer(13847): Cannot generate texture from bitmap
08-18 17:49:28.280: ERROR/OpenGLRenderer(13847): Cannot generate texture from bitmap
08-18 17:49:28.290: ERROR/OpenGLRenderer(13847): Cannot generate texture from bitmap
08-18 17:49:28.310: ERROR/OpenGLRenderer(13847): Cannot generate texture from bitmap
08-18 17:49:28.330: ERROR/OpenGLRenderer(13847): Cannot generate texture from bitmap
08-18 17:49:28.350: ERROR/OpenGLRenderer(13847): Cannot generate texture from bitmap
08-18 17:49:28.360: ERROR/OpenGLRenderer(13847): Cannot generate texture from bitmap
08-18 17:49:28.380: ERROR/OpenGLRenderer(13847): Cannot generate texture from bitmap
08-18 17:49:28.400: ERROR/OpenGLRenderer(13847): Cannot generate texture from bitmap
08-18 17:49:28.410: ERROR/OpenGLRenderer(13847): Cannot generate texture from bitmap
08-18 17:49:28.430: ERROR/OpenGLRenderer(13847): Cannot generate texture from bitmap
08-18 17:49:28.450: ERROR/OpenGLRenderer(13847): Cannot generate texture from bitmap
08-18 17:49:28.500: INFO/System.out(13847): Image width: 144; height: 108
08-18 17:49:28.570: DEBUG/dalvikvm(13847): GC_FOR_ALLOC freed 4094K, 42% free 20449K/35143K, paused 27ms
08-18 17:49:28.620: INFO/dalvikvm-heap(13847): Grow heap (frag case) to 22.385MB for 2457616-byte allocation

和外廊,小部件的项目是黑色的。 但是,应用程序的工作。

And item on Gallery-widget is black. But application works.

你有什么想法,这个问题?

Have you any idea for this question?

推荐答案

我有同样的问题。事情是,通过调用再循环()你破坏引用的图像的像素数据和对象本身本地对象(位图)被标记为死。如果没有其他对象引用到它们将通过GC来释放这些数据。因此,两种可能的事情都发生在你:

I just had the same problem. The thing is that by calling recycle() you destroy native object referencing to the pixel data of the image and the object itself (bitmap) is marked "dead". If there is no other object referencing to those data they will be freed by GC. So two possible thing are happening to you:

  1. 的位图进行简单地通过GC收集所以渲染器没有数据使用。
  2. 为位图本身被标记为死,你不能读/写像素从/到它

所以,如果你使用/引用此位图,你回收它,您只需拒绝访问它的每一个人。至少我的理解是这样的。仔细阅读本:

So if you're using/referencing this bitmap and you recycle it, you simply deny access to it for everybody. At least I understand it this way. Read this carefully:

<一个href="http://developer.android.com/reference/android/graphics/Bitmap.html#recycle%28%29">http://developer.android.com/reference/android/graphics/Bitmap.html#recycle%28%29

所以,你应该用循环只有当你确信没有人使用/引用的位图对象。我希望它能帮助。

So you should use recycle only if you're sure that no one is using/referencing the bitmap object. I hope it helps.

这篇关于Android的消息&QUOT;无法生成的纹理从位图&QUOT;的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆