【发布时间】:2013-09-21 20:19:47
【问题描述】:
我已经做了以下事情来处理我的应用程序中的位图:
-
LruCache用于Bitmaps,大小为内存的 1/8 - 使用
BitmapFactory.Options计算inSampleSize - 在创建
Bitmaps时捕获OOM,在那里调用evictAll和System.gc() - 还有
AsyncTask解码有时用于Bitmaps
我使用BitmapFactory.decodeFile,看起来VM 从内存中释放Bitmaps 的速度不够快。我在某处读到使用BitmapFactory.decodeFile 可能存在错误,所以我尝试使用BitmapFactory.decodeFileDescriptor,但我随机得到以下信息:
skia --- 解码器->解码返回假
如果我不想使用BitmapFactory.decodeFileDescriptor 或其他事情要做,那么FileInputStream 是否有问题需要在这里修复。
这花了我太多时间,我已经阅读了基于此的所有解决方案以及 Google 建议 Bitmap 处理的方式,但我已经走到了死胡同。
谢谢。
【问题讨论】:
-
你想用
Bitmaps做什么?如果你问这个问题,我相信你加载了很多 -
我怀疑您在 listview 或 gridview 中使用位图,它会导致 OutOfMemoryError。如果是这种情况,您应该考虑位图的弱引用。你能进一步阐述你的场景吗
-
在 ListView 和 GridView 中,也可以全屏缩放
-
请查看此链接github.com/nostra13/Android-Universal-Image-Loader 我认为这可能对您有所帮助。
-
我们公司的政策不允许任何第三方库。
标签: android memory-management bitmap out-of-memory