Когда я удаляю строку requestQuery.add(), все работает отлично, за исключением отсутствия сетевых данных. После добавления requestQuery.add() - я получаю это:Почему возникает исключение OutOfMemory при вызове Volley.RequestQuery.add()?
Traceback:
08-29 18:15:53.071 6305-7075/? E/dalvikvm-heap﹕ Out of memory on a 840969348-byte allocation.
08-29 18:15:53.141 6305-7075/? E/AndroidRuntime﹕ FATAL EXCEPTION: Thread-27227
java.lang.OutOfMemoryError
at com.android.volley.toolbox.DiskBasedCache.streamToBytes(DiskBasedCache.java:322)
at com.android.volley.toolbox.DiskBasedCache.readString(DiskBasedCache.java:540)
at com.android.volley.toolbox.DiskBasedCache.readStringStringMap(DiskBasedCache.java:562)
at com.android.volley.toolbox.DiskBasedCache$CacheHeader.readHeader(DiskBasedCache.java:403)
at com.android.volley.toolbox.DiskBasedCache.initialize(DiskBasedCache.java:156)
at com.android.volley.CacheDispatcher.run(CacheDispatcher.java:84)
Вот код, у меня есть:
public class DataReceiver {
public static void initializeCountriesListUpdate(String urlString, final Context context) throws IOException {
RequestQueue requestQueue = Volley.newRequestQueue(context);
JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(Request.Method.GET, urlString,
new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
try {
ArrayList<Country> countriesList = JsonParser.getCountriesFromJson(response, context);
((CountriesListActivity)context).updateCountriesList(countriesList);
((CountriesListActivity)context).progressDialog.hide();
((CountriesListActivity)context).progressDialog.dismiss();
} catch (JSONException e) {
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.e("NetworkManager", "Cannot resolve data from the server");
}
});
VolleySingleton.getInstance().getRequestQueue().add(jsonObjectRequest);
}
UPD1:
Я попытался добавить
android:hardwareAccelerated="false"
android:largeHeap="true"
Манифест, но это не помогло.
Вы анализировали свою кучу свалки? – spiderman
Моя проблема была в отсутствии кеша. Благодаря Udi для ссылки намек. Это руководство помогло мне сделать правильный синглтон: https://developer.android.com/training/volley/requestqueue.html#singleton –