public void parseInfo(String genderTxt2, Boolean gender){
final String URL = "url" +
"?adult=" + isAdult.toString() + "&gender=" + genderTxt2;
info_text.setVisibility(View.GONE);
listview_progress.setVisibility(View.VISIBLE);
mRequestQueue.add(new JsonObjectRequest(Request.Method.GET,URL,null,new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
try {
if (!fPullToRefreshAttacher.isRefreshing()) {
names.clear();
}
VolleyLog.v("Response:%n %s", response.toString(4));
adapter.clear();
parseJSON(response);
} catch (JSONException e) {
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
// VolleyLog.e("Error: ", error.getMessage().toString());
Toast.makeText(acc, "Unable to load names list! Please check connection", Toast.LENGTH_LONG).show();
}
}));
mRequestQueue.start();
}
很简单,在许多设备上获取OutOfMemory异常。任何想法?
答案 0 :(得分:2)
之前我遇到过类似的问题。发生的事情是你在解析之前将整个JSON
对象放入内存中。您想要做什么使用某种读取器来流式传输。
https://sites.google.com/site/gson/streaming
来自doc:
大多数应用程序应仅使用对象模型API。 JSON流媒体在以下几种情况下非常有用:
当不可能或不希望将整个对象模型加载到内存中时。这在内存有限的移动平台上最为相关。
在文档完全可用之前需要阅读或编写文档。