Volley - DiskBasedCache OutOfMemory Exception - 数组大小太大

时间:2013-09-07 13:58:22

标签: android android-volley

  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异常。任何想法?

http://crashes.to/s/834735fdc1b/details

1 个答案:

答案 0 :(得分:2)

之前我遇到过类似的问题。发生的事情是你在解析之前将整个JSON对象放入内存中。您想要做什么使用某种读取器来流式传输。

https://sites.google.com/site/gson/streaming

来自doc:

  

大多数应用程序应仅使用对象模型API。 JSON流媒体在以下几种情况下非常有用:

     

当不可能或不希望将整个对象模型加载到内存中时。这在内存有限的移动平台上最为相关。

     

在文档完全可用之前需要阅读或编写文档。