Android StringBuilder OutOfMemoryError

时间:2012-06-21 08:26:07

标签: android out-of-memory stringbuilder

我在解析一些json数据时遇到了一个大问题,我从Web服务器获得了这些数据。我正在做的事情是我通过POST获得响应,然后将响应转换为字符串并解析它。但在某些设备中,我得到了OutOfMemoryError,我正在努力解决这个问题。以下是我将响应转换为字符串的方法:

public static String convertStreamToString(InputStream is) throws Exception {
    ByteArrayOutputStream into = new ByteArrayOutputStream();
    byte[] buf = new byte[4096];
    for (int n; 0 < (n = is.read(buf));) {
        into.write(buf, 0, n);
    }
    into.close();
    return new String(into.toByteArray(), "UTF-8");
}

以下是我如何使用这段代码:

InputStream response = new BufferedInputStream(connection.getInputStream());

        try {
            String responsee = convertStreamToString(response);
            jsonParser(responsee);
        } catch (Exception e) {
            e.printStackTrace();
            cancelDialog("Error occurred! Please try again later.");
        }

任何建议我如何解决这个问题,以免在所有设备中发生?

提前感谢您提供任何帮助或建议。

1 个答案:

答案 0 :(得分:0)

手机内存有限。

我也面临同样的问题。我们发现的解决方案是只下载必要的信息。因此,请确认您的要求移动设备中需要多少数据。如果您过滤不必要的数据,则问题将得到解决。

在极端条件下测试程序之前,首先检查是否发生了简单的下载,然后检查数据的限制意味着它不会给出内存错误的程度。因此,重新修改你的要求。