Ich bekam OutOfMemoryError Nachrichten in LogCat und meine App stürzte ab, weil die Fehler nicht abgefangen wurden.
Zwei Dinge verursachten die OutOfMemoryError:
1. Lesen einer großen Textdatei in eine Zeichenfolge.
2. Senden dieser Zeichenfolge an meine TextView.
Das einfache Hinzufügen eines Catch zu diesen beiden Dingen fängt nicht nur den OutOfMemoryError ab, sondern scheint auch das Problem des fehlenden Arbeitsspeichers vollständig zu lösen.
Kein Absturz mehr und keine weiteren Fehlermeldungen in LogCat. Die App läuft einfach perfekt.
Wie ist das möglich? Was genau passiert?
'Catching' OutOfMemoryError löst das Problem der Speicherauslastung vollständig?
Mit diesem Code, war ich immer die Fehlermeldungen & App abstürzt:
try
{
myString = new Scanner(new File(myFilePath)).useDelimiter("\\A").next();
}
catch (FileNotFoundException e)
{
e.printStackTrace();
}
myTextView.setText(myString);
Nur durch 'Fang' den OutOfMemoryError, keine Fehlermeldungen mehr in LogCat und kein Krachen:
try
{
myString = new Scanner(new File(myFilePath)).useDelimiter("\\A").next();
}
catch (FileNotFoundException e)
{
e.printStackTrace();
}
catch(OutOfMemoryError e)
{
}
try
{
myTextView.setText(myString);
}
catch(OutOfMemoryError e)
{
}
sehen Protokolle e.printstacktrace in OutOfMemoryError catch-Block – Calvin
mit @Droider Zustimmen hinzuzufügen. Sie sehen keine Fehlermeldungen, weil Sie sie nicht wie zuvor ausdrucken. – csmckelvey
Siehe http://stackoverflow.com/questions/2679330/catching-java-lang-outofmemoryerror – Raedwald