Stavo ricevendo OutOfMemoryError messaggi in LogCat e la mia app si bloccava perché gli errori non erano stati rilevati.
Due cose causavano il OutOfMemoryError:
1. Lettura di un file di testo di grandi dimensioni in una stringa.
2. Invio di quella stringa al mio TextView.
Semplicemente aggiungendo un fermo a queste due cose, non solo si cattura lo OutOfMemoryError ma sembra che risolva completamente il problema di esaurimento della memoria.
Niente più crash e niente più messaggi di errore in LogCat. L'app funziona perfettamente.
Com'è possibile? Cosa sta succedendo esattamente?
'Catching' OutOfMemoryError risolve completamente i problemi di memoria esaurita?
Con questo codice, mi è stato sempre il messaggi di errore & app crash:
try
{
myString = new Scanner(new File(myFilePath)).useDelimiter("\\A").next();
}
catch (FileNotFoundException e)
{
e.printStackTrace();
}
myTextView.setText(myString);
Solo per 'catturare' il OutOfMemoryError, non più messaggi di errore in LogCat e nessun crash:
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)
{
}
per vedere i registri aggiungere e.printstacktrace in OutOfMemoryError blocco catch – Calvin
d'accordo con @Droider. Non vedi i messaggi di errore perché non li stai stampando come prima. – csmckelvey
Vedere http://stackoverflow.com/questions/2679330/catching-java-lang-outofmemoryerror – Raedwald