- Forum-Beiträge: 131
16.11.2011, 15:27:20 via Website
16.11.2011 15:27:20 via Website
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)
2 BufferedReader br = new BufferedReader(new InputStreamReader(is, "UTF-8"));
3 StringBuilder alles = new StringBuilder();
4 String line;
5 while ((line = br.readLine()) != null)
6 {
7 alles.append(line);
8 }
9 is.close();
10 jsonArray = new JSONArray(alles.toString());
11 for (int i = 0; i < jsonArray.length(); i++)
12 {
13 JSONObject obj = jsonArray.getJSONObject(i);
14 String ean = obj.getString("EAN").trim();
15 String vk6 = obj.getString("vk6").trim();
16 Availability availability = new Availability(ean, vk6);
17 Datenbank.availibilityEintragen(availability);
18 }
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.
Empfohlener redaktioneller Inhalt
Mit Deiner Zustimmung wird hier ein externer Inhalt geladen.
Mit Klick auf den oben stehenden Button erklärst Du Dich damit einverstanden, dass Dir externe Inhalte angezeigt werden dürfen. Dabei können personenbezogene Daten an Drittanbieter übermittelt werden. Mehr Infos dazu findest Du in unserer Datenschutzerklärung.