2
  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

4

1 回答 1

2

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

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

从文档:

大多数应用程序应该只使用对象模型 API。JSON 流仅在几种情况下很有用:

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

当需要在文档完全可用之前读取或写入文档时。

于 2013-09-07T18:36:17.697 回答