Я продолжаю получать эту ошибку при запуске приложения. Приложение будет хорошо компилироваться, и взаимодействие с приложением будет нормальным, и до определенного периода времени он выйдет с сообщением об ошибке OUTOFMEMORY.FATAL EXCEPTION: main java.lang.OutOfMemoryError
Ошибка Logcat:
E/AndroidRuntime﹕ FATAL EXCEPTION: main
java.lang.OutOfMemoryError
at java.lang.AbstractStringBuilder.enlargeBuffer(AbstractStringBuilder.java:94)
at java.lang.AbstractStringBuilder.append0(AbstractStringBuilder.java:145)
at java.lang.StringBuilder.append(StringBuilder.java:216)
at org.json.JSONStringer.value(JSONStringer.java:249)
at org.json.JSONArray.writeTo(JSONArray.java:572)
at org.json.JSONStringer.value(JSONStringer.java:233)
at org.json.JSONObject.writeTo(JSONObject.java:671)
at org.json.JSONObject.toString(JSONObject.java:640)
at com.android.volley.toolbox.JsonObjectRequest.<init>(JsonObjectRequest.java:47)
at com.apps.robotapp.RobotService.onStart(RobotService.java:75)
at android.app.Service.onStartCommand(Service.java:450)
at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:2833)
at android.app.ActivityThread.access$2000(ActivityThread.java:159)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1419)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5419)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:525)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1187)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1003)
at dalvik.system.NativeStart.main(Native Method)
В Java: 75 (RobotService: OnStart), где происходит ошибка:
RequestQueue queue = Volley.newRequestQueue(this);
JsonObjectRequest jsObjRequest = new JsonObjectRequest(Request.Method.POST,SPHERE_URL,obj,
new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
//System.out.println("JsonObjectRequest:>>" + response + "<<");
System.out.println(response);
//hideProgressDialog();
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
//hideProgressDialog();
Runtime.getRuntime().gc();
}
}); queue.add(jsObjRequest);
Я реализовал как System.gc() и Runtime.getRuntime() .gc() в мою реализацию, однако она по-прежнему не работает.
Любая идея, как я могу решить эту проблему? Thanks
Какая линия исходит от линии 75? – TDG
Вызов GC недостаточен, если вы все еще поддерживаете ссылки вокруг. В качестве примера я вижу, что вы используете для вызова 'queue.add' для каждого объекта. Вы также заботитесь о том, чтобы выскочить из этой очереди или расти без контроля? – skypjack
@TDG Это строка 75: 'JsonObjectRequest jsObjRequest = новый JsonObjectRequest (Request.Method.POST, SPHERE_URL, OBJ, новый Response.Listener()' –
developer