【发布时间】:2012-04-30 14:33:02
【问题描述】:
我的 Android 应用程序连接到服务以从我们的服务器请求文件。在请求时,文件类型未知,但服务器会回复一个 Hashmap,其中包含文件扩展名和文件数据的字节数组。
然后,我的移动应用程序会获取这些数据,如果它是 jpg、png、txt 或 html 文件,它将在屏幕上显示该文件。如果是不同的文件类型,则会创建一个文件并提示系统尝试在外部应用程序中打开该文件。
文本、html 和外部文件都可以正常工作。对于我加载的第一张图片,图片工作正常,但如果我再次调用服务器以加载列表中的下一张图片,我经常会收到此错误:
E/AndroidRuntime(390): java.lang.OutOfMemoryError: bitmap size exceeds VM budget
我正在使用相同的服务器调用,并将新信息存储在旧信息之上。 这是我实际加载图像数据的代码:
imageView.setImageBitmap(BitmapFactory.decodeByteArray(bytes, 0, bytes.length));
有没有办法处理内存问题,使我的应用程序不会崩溃?我已经尝试从服务器端缩小图像以使它们更小更易于管理(但这似乎是一个创可贴而不是适当的修复。)目前我只是使用原始字节和 BitmapFactory 来加载 imageView,但如果有其他方法,我总是可以用实际的 png 或 jpg 创建一个临时文件,如果这有任何帮助的话。
有人可以就处理此问题的最佳方法提供一些建议吗?
【问题讨论】:
标签: android android-imageview out-of-memory bitmapfactory