json을 사용하여 mysql 서버에서 데이터를 가져 오는 앱을 작성 중입니다. 메모리 부족 오류를 처리하기 위해 지연로드를 구현했습니다. 잠시 동안 앱은 정상적으로 실행되었지만 이제는 메모리 오류가 다시 발생합니다. 이 시간은 데이터가 아닌 이미지에만 적용됩니다. 앱을 응답 상태로 유지하면서 데이터를 처리 할 수있는 방법이 있습니까? logcat 출력은 다음과 같습니다. -android에서 많은 양의 데이터를 처리하는 방법
05-12 09:42:50.271: E/AndroidRuntime(1093): FATAL EXCEPTION: AsyncTask #2
05-12 09:42:50.271: E/AndroidRuntime(1093): Process: com.opaxlabs.salepurchase, PID: 1093
05-12 09:42:50.271: E/AndroidRuntime(1093): java.lang.RuntimeException: An error occured while executing doInBackground()
05-12 09:42:50.271: E/AndroidRuntime(1093): at android.os.AsyncTask$3.done(AsyncTask.java:300)
05-12 09:42:50.271: E/AndroidRuntime(1093): at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:355)
05-12 09:42:50.271: E/AndroidRuntime(1093): at java.util.concurrent.FutureTask.setException(FutureTask.java:222)
05-12 09:42:50.271: E/AndroidRuntime(1093): at java.util.concurrent.FutureTask.run(FutureTask.java:242)
05-12 09:42:50.271: E/AndroidRuntime(1093): at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
05-12 09:42:50.271: E/AndroidRuntime(1093): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
05-12 09:42:50.271: E/AndroidRuntime(1093): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
05-12 09:42:50.271: E/AndroidRuntime(1093): at java.lang.Thread.run(Thread.java:841)
05-12 09:42:50.271: E/AndroidRuntime(1093): Caused by: java.lang.OutOfMemoryError
05-12 09:42:50.271: E/AndroidRuntime(1093): at java.lang.AbstractStringBuilder.enlargeBuffer(AbstractStringBuilder.java:94)
05-12 09:42:50.271: E/AndroidRuntime(1093): at java.lang.AbstractStringBuilder.append0(AbstractStringBuilder.java:145)
05-12 09:42:50.271: E/AndroidRuntime(1093): at java.lang.StringBuffer.append(StringBuffer.java:219)
05-12 09:42:50.271: E/AndroidRuntime(1093): at com.opaxlabs.salepurchase.CustomHttpClient.executeHttpGet(CustomHttpClient.java:150)
05-12 09:42:50.271: E/AndroidRuntime(1093): at com.opaxlabs.salepurchase.AllItemsActivity$AsyncData.doInBackground(AllItemsActivity.java:106)
05-12 09:42:50.271: E/AndroidRuntime(1093): at com.opaxlabs.salepurchase.AllItemsActivity$AsyncData.doInBackground(AllItemsActivity.java:1)
05-12 09:42:50.271: E/AndroidRuntime(1093): at android.os.AsyncTask$2.call(AsyncTask.java:288)
05-12 09:42:50.271: E/AndroidRuntime(1093): at java.util.concurrent.FutureTask.run(FutureTask.java:237)
05-12 09:42:50.271: E/AndroidRuntime(1093): ... 4 more
도움을 주시면 감사하겠습니다. 미리 감사드립니다.
편집 : 다음과 같은 오류가 발생 코드는 - 내가 전에 본 한
protected Item[] doInBackground(String... arg0) {
String str = null;
try {
str = CustomHttpClient.executeHttpGet(arg0[0]);
JSONArray array = new JSONArray(str);
item_data = new Item[array.length()];
selectionId = new int[array.length()];
for (int i = 0; i < item_data.length; i++) {
JSONObject jdata = array.getJSONObject(i);
String path = Constants.THUMBS + jdata.getString("name");
int itemid = jdata.getInt("id");
String cityid = jdata.getString("city_id");
item_data[i] = new Item(itemid, cityid, path,
jdata.getString("title"), jdata.getString("price"));
selectionId[i] = jdata.getInt("subcategory_id");// change
// the
// field
// name
// here
}
} catch (JSONException j) {
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return item_data;
}
@P이 오류가 발생한 곳의 코드를 입력하십시오. –