J'ai une application cartographique défilante qui a pour l'instant un énorme bitmap. Il se charge bien au démarrage, mais quand il perd son statut de premier plan et que l'utilisateur le ramène à nouveau, il obtient une erreur de mémoire insuffisante. Dans onPause, il supprime le bitmap à l'aide de recycle et le marque comme nul. Le onResume vérifie si map == null et chargera le bitmap de nouveau, ce qui plante le programme malgré le recyclage de l'image bitmap ... Voici quelques morceaux de code. Toutes les autres références à la carte Bitmap vérifient d'abord si elle est nulle avant de charger/dessiner.Erreur de mémoire insuffisante concernant les grandes images et le cycle de vie de l'activité Android
OnPause
protected void onPause() {
super.onPause();
Log.e("sys","onPause was called");
if (map != null)
{
map.recycle();
map = null;
System.gc();
Log.e("sys","trashed the map");
}
}
mon onResume
protected void onResume(){
super.onResume();
Log.e("sys","onResume was called");
if (map == null)
map = BitmapFactory.decodeResource(getResources(),
R.drawable.lowresbusmap);
Log.e("sys","redrew the map");
}
Vous obtenez cette erreur dans le débogueur, ou sur un vrai téléphone ? – EboMike
sur un vrai téléphone (droïde motorola) – jfisk