public String loadJSONFromAsset(String path) {
String json = null;
try {
InputStream is = this.getAssets().open(path);
int size = is.available();
Log.d("Size: ", "" +size);
byte[] buffer = new byte[size];
is.read(buffer);
is.close();
json = new String(buffer, "UTF-8");
} catch (IOException ex) {
ex.printStackTrace();
}
return json;
}
Dies ist Code, der die Datei in JSON-Datendatei konvertieren. Es funktioniert wörtlich, es erstellt JSON-Datei, aber die Größe von "ist" ist appr. 8MBInputStream und OutOfMemory Fehler
D/Size:: 7827533
und OutOfMemory Fehler tritt bei den meisten Geräten wie
java.lang.OutOfMemoryError
at java.lang.String.<init>(String.java:255)
at java.lang.String.<init>(String.java:228)
at com.example.fkn.projecttr.List.loadJSONFromAsset(List.java:255)
Wie kann ich damit umgehen? Wie kann es effizienter codiert werden? Es hat kein Problem mit der Laufzeit, aber es verbraucht zu viel Speicher auf dem Gerät. Wenn der Gerätespeicher keine Kapazität mehr hat, stürzt das Programm ab.
Nicht in Bezug auf Ihr Problem, aber nicht aus einem 'catch' Block zurückkehren. – bradimus
Danke für Ihren Rat! – user139518
Dies geschieht möglicherweise nicht durch das, was Sie hier tun: Objekte, die mit anderem Code erstellt wurden, können den größten Teil Ihres verfügbaren Speichers belegen. –