2012-12-27 1 views
1

Pour mon application, j'ai besoin de charger un bitmap qui peut parfois être très volumineux. Je reçois des erreurs OutOfMemory même sur des appareils comme la galaxie S2. J'ai cherché autour et trouvé que j'ai besoin de recycler l'image bitmap.Gestion de bitmap Android pré-nid d'abeille

Auparavant, je chargeais le bitmap avec BitmapFactory, créant une nouvelle image à l'échelle et créant un bitmapdrawable sur une ligne. En faisant cela, est-ce que je charge deux bitmaps en mémoire? Dois-je créer le bitmap initial et le recycler après avoir créé le bitmap mis à l'échelle?

Si l'activité sera lancée fréquemment dois-je charger le bitmap une fois à un champ statique ou devrais-je recycler et de recréer à chaque fois?

Merci

Répondre

0

Divisez le processus en plusieurs étapes. Si vous mesurez le bitmap par rapport à l'espace d'écran disponible, puis chargez un bitmap mis à l'échelle, vous pouvez effectuer la première étape sans charger le bitmap en mémoire à l'aide de BitmapFactory.Options.inJustDecodeBounds. Cela vous donnera un objet Bitmap sans les données de pixel mais avec les propriétés width et height. Utilisez ensuite cela pour décoder votre bitmap mis à l'échelle en utilisant BitmapFactory.Options.inSampleSize.

Google ces termes et vous trouverez des tonnes d'exemples de code faisant juste cela. Et oui, n'oubliez pas de recycler lorsque vous avez terminé avec un bitmap.

https://www.google.com/#q=BitmapFactory+Options+inJustDecodeBounds+inSampleSize