【发布时间】:2012-08-19 16:45:21
【问题描述】:
我知道这个问题已经在这个论坛上被问过很多次了,但我仍然无法得到完美的答案来解决这个问题。
在我的应用程序中,我使用 3 种不同尺寸的相同图像:小、中、大。
当我多次使用这张图片时,我得到了这个错误。
08-24 11:08:55.994: E/ImageLoader(636): bitmap size exceeds VM budget
08-24 11:08:55.994: E/ImageLoader(636): java.lang.OutOfMemoryError: bitmap size exceeds VM budget
08-24 11:08:55.994: E/ImageLoader(636): at android.graphics.BitmapFactory.nativeDecodeStream(Native Method)
08-24 11:08:55.994: E/ImageLoader(636): at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:459)
08-24 11:08:55.994: E/ImageLoader(636): at com.nostra13.universalimageloader.core.ImageDecoder.decode(ImageDecoder.java:75)
08-24 11:08:55.994: E/ImageLoader(636): at com.nostra13.universalimageloader.core.LoadAndDisplayImageTask.decodeWithOOMHandling(LoadAndDisplayImageTask.java:161)
08-24 11:08:55.994: E/ImageLoader(636): at com.nostra13.universalimageloader.core.LoadAndDisplayImageTask.decodeImage(LoadAndDisplayImageTask.java:148)
08-24 11:08:55.994: E/ImageLoader(636): at com.nostra13.universalimageloader.core.LoadAndDisplayImageTask.tryLoadBitmap(LoadAndDisplayImageTask.java:104)
08-24 11:08:55.994: E/ImageLoader(636): at com.nostra13.universalimageloader.core.LoadAndDisplayImageTask.run(LoadAndDisplayImageTask.java:58)
08-24 11:08:55.994: E/ImageLoader(636): at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
08-24 11:08:55.994: E/ImageLoader(636): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
08-24 11:08:55.994: E/ImageLoader(636): at java.util.concurrent.FutureTask.run(FutureTask.java:137)
08-24 11:08:55.994: E/ImageLoader(636): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1068)
08-24 11:08:55.994: E/ImageLoader(636): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:561)
08-24 11:08:55.994: E/ImageLoader(636): at java.lang.Thread.run(Thread.java:1096)
任何人都可以帮助解决它..我已经搜索了很多相同的问题,但我仍然没有得到这样的解决方案..
这就是为什么我必须在凌晨四点写这个问题。
我正在等待肯定的答复..
谢谢。
【问题讨论】:
-
您能提供一些代码吗?您已经尝试过哪些图像缓存/加载的确切逻辑?
-
其实我正在使用universal-image-loader-1.5.4.jar 文件来加载我的图片..
-
首先阅读 Android 开发人员培训here,了解如何处理位图。
-
您是否每次使用时都在为图像重新创建位图?或者您只分配一次并重复使用它们?如果是前者,你有没有调用 bitmap.recycle() ?
-
.memoryCache(new WeakMemoryCache()) 在配置 ImageLoaderConfiguration 时使用它
标签: android