java - Android 中可从 URL 有限内存中绘制

标签 java android memory

我想从 URL 获取图像并将其转换为可绘制的。我有这个方法,效果很好:

public static Drawable getDrawableFromUrl(String url) throws IOException {
    Bitmap x;

    HttpURLConnection connection = (HttpURLConnection) new URL(url).openConnection();
    connection.connect();
    InputStream input = connection.getInputStream();

    x = BitmapFactory.decodeStream(input);
    return new BitmapDrawable(x);
}

除了一件事。当图像太大时应用程序崩溃。

E/dalvikvm-heap(12750): 13142360-byte external allocation too large for this process.
E/dalvikvm(12750): Out of memory: Heap Size=6023KB, Allocated=3177KB, Bitmap Size=2563KB, Limit=20480KB
E/dalvikvm(12750): Trim info: Footprint=6023KB, Allowed Footprint=6023KB, Trimmed=952KB
E/GraphicsJNI(12750): VM won't let us allocate 13142360 bytes

我可以以某种方式增加图像所需的内存吗?或者也许有办法解决这个问题?

最佳答案

Loading Large Bitmaps Efficiently

上面的链接从url返回调整大小的位图,然后您可以转换为可绘制的位图。

从该链接下载并使用 Bitmap fun 示例应用程序。

关于java - Android 中可从 URL 有限内存中绘制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13414870/

相关文章:

java - Runtime.exec() 到 bash javac 错误

java - 如何在Java7中处理2个不同版本的HttpServletRequest?

android - 使用 RenderScript 支持库获取 "cannot locate symbol _Z17rsMatrixTranslateP12rs_matrix4x4fff"?

android - GLSurfaceView透明背景

c - malloc() 和 calloc() 是否正确?

java - 如何使用 java 为 tor onion 服务生成有效的私钥(RSA 1024)?

java - Eclipse 上的 Alfresco Mobile Android 错误

android - 获取 `java.lang.AssertionError: java.lang.NoSuchFieldException: HTTP_1_0`

c - GDB - 显示地址

C链表-如何释放内存?