S
samarek
Fortgeschrittenes Mitglied
- 2
Hi,
ich hab folgendes Problem und zwar ...
führe ich beim start meiner App einen AsyncTask aus, der Daten aus einer fast 6mb großen JSON-Datei liest und die in eine Datenbank schreibt.
Wobei die App dann nach nicht allzulanger Zeit eine absehbare "OutOfMemoryException" auslöst.
hier ist mal ein vergleichbarer Quellcodeteil (der echte ist noch einiges länger)
Meine Frage ist jetzt, wie kann ich diesen Code ein wenig "glätten" damit er nicht mit so großen Datenmengen hantieren muss?
Also quasi 100 Datensätze lesen und in die Datenbank schreiben, dann wieder alles aus dem Speicher schmeissen und die nächsten 100 Datensätze verarbeiten.
ich hab folgendes Problem und zwar ...
führe ich beim start meiner App einen AsyncTask aus, der Daten aus einer fast 6mb großen JSON-Datei liest und die in eine Datenbank schreibt.
Wobei die App dann nach nicht allzulanger Zeit eine absehbare "OutOfMemoryException" auslöst.
hier ist mal ein vergleichbarer Quellcodeteil (der echte ist noch einiges länger)
Code:
InputStream is = context.getResources().openRawResource(availibilityJson);
BufferedReader br = new BufferedReader(new InputStreamReader(is, "UTF-8"));
StringBuilder alles = new StringBuilder();
String line;
while ((line = br.readLine()) != null)
{
alles.append(line);
}
is.close();
jsonArray = new JSONArray(alles.toString());
for (int i = 0; i < jsonArray.length(); i++)
{
JSONObject obj = jsonArray.getJSONObject(i);
String ean = obj.getString("EAN").trim();
String vk6 = obj.getString("vk6").trim();
Availability availability = new Availability(ean, vk6);
Datenbank.availibilityEintragen(availability);
}
Also quasi 100 Datensätze lesen und in die Datenbank schreiben, dann wieder alles aus dem Speicher schmeissen und die nächsten 100 Datensätze verarbeiten.