我正在寻找有关下载和解析 JSON 的一些建议,因为我从用户那里得到崩溃日志,告诉我他们遇到了 OutOfMemoryError。
我现在使用的是下面的代码:
HttpParams httpParameters = new BasicHttpParams();
HttpConnectionParams.setConnectionTimeout(httpParameters, Integer.parseInt(connectionTimeOut + "000"));
HttpClient client = new DefaultHttpClient(httpParameters);
HttpGet request = new HttpGet(theUrl);
ResponseHandler<String> handler = new BasicResponseHandler();
result = client.execute(request, handler);
return result;
结果是我通过 JSONObject json = new JSONObject(result)
创建了一个 json 对象,并从这个 JSONObject 创建了我自己的自定义对象。
最佳答案
我会首先检查 OOME 是由处理大型 JSON 对象引起的。
如果是这样,也许将 JSON 库(例如 GSON)与 Retrofit 结合使用,它允许您直接从输入流中读取对象,而不是先将整个输入流读取到字符串中。
如果这太重了(例如,如果 JSON 对象嵌套很深,缓冲输入流可能会导致设备内存不足),您可以考虑编写自己的 GSON TypeAdapter 来读取输入的特定区域流。
关于android - 内存高效地下载和解析 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27489486/