android - 内存高效地下载和解析 JSON

标签 android json download

我正在寻找有关下载和解析 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/

相关文章:

json - 快速解析来自 POST 请求的数据

download - 运行下载的脚本

c - 如何使用 C 套接字编程下载文件

java - Android调用C++函数得到UnsatisfiedLinkError

javascript - 如何在 Python 中使用 Flask 压缩/最小化 JSON/Jsonify 的大小?

java - 在 Android 上分析来自麦克风的声音(谐波、分音、泛音)

c++ - 从 nlohmann json 访问元素

windows - 用于 Bootstrap 文件下载的 AWS CloudFormation 和 Windows Server 2008 R2

java - Android 和 Firebase 将 EditText 与实时数据库子值进行比较

android - 从广播接收器到 Activity 的待处理 Intent - 收到旧数据