Aller au contenu

Out of Memory : comment sortir proprement


bsegonnes

Recommended Posts

Après des mois de recherche, j'a enfin trouvé comment les récupérer proprement et afficher un beau message à la place du 'plantage' de l'Activity.

Cà peut servir à d'autres.... :

try {

methodeTropGourmande();

}

catch(java.lang.OutOfMemoryError e) {

pliens de variables = null;

System.gc();

System.runFinalization();

}

if (variable==null) {

handlerDocumentReader.post(new Runnable() {

public void run() { //

final AlertDialog.Builder builder = new AlertDialog.Builder(readerActivity);

builder.setMessage(Global.resources.getString(R.string.file_too_big))

.setCancelable(false)

.setPositiveButton("OK", new DialogInterface.OnClickListener() {

public void onClick(DialogInterface dialog, int id) {

activity.finish(); // close window

}

});

AlertDialog alert = builder.create();

alert.show();

} // end of run()

} // end of Runnable

); // end of post()

(j'ai pas réussi à trouver comment créer une page sur le Wiki)

Lien vers le commentaire
Partager sur d’autres sites

Peut être préciser que l'appel à System.gc(); ne sert à rien si vous ne libérez pas des ressources immédiatement ( pliens de variables = null; ) car l'OutOfMemoryError est due à l'incapacité du GarbageCollector à libérer de la mémoire. Si dans le catch, vous tentez d'instancier de nouveaux objets vous risquez de tout replanter à nouveau.

Lien vers le commentaire
Partager sur d’autres sites

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...