我在解析一些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.");
}
任何建议我如何解决这个问题,以免在所有设备中发生?
提前感谢您提供任何帮助或建议。
答案 0 :(得分:0)
手机内存有限。
我也面临同样的问题。我们发现的解决方案是只下载必要的信息。因此,请确认您的要求移动设备中需要多少数据。如果您过滤不必要的数据,则问题将得到解决。
在极端条件下测试程序之前,首先检查是否发生了简单的下载,然后检查数据的限制意味着它不会给出内存错误的程度。因此,重新修改你的要求。