Plusieurs raisons expliquent pourquoi le chargement de bitmaps dans votre application Android est délicat :
- Les bitmaps peuvent très facilement épuiser le budget mémoire d'une application. Par exemple, l'
appareil photo du téléphone Pixel prend des
photos de 4 048 x 3 036 pixels (12 mégapixels).
Si la configuration bitmap utilisée est
ARGB_8888, la valeur par défaut pour Android 2.3 (niveau d'API 9) et versions ultérieures, le chargement d'une seule photo en mémoire prend environ 48 Mo de mémoire (4 048 x 3 036 x 4 octets). Une demande de mémoire aussi importante peut immédiatement utiliser toute la mémoire disponible pour l'application. - Le chargement de bitmaps sur le thread UI peut dégrader les performances de votre application, entraînant une lenteur de réponse, voire des messages ANR. Il est donc important de gérer correctement le threading lorsque vous travaillez avec des bitmaps.
- Si votre application charge plusieurs bitmaps en mémoire, vous devez gérer habilement la mémoire et la mise en cache sur disque. Sinon, la réactivité et la fluidité de l'interface utilisateur de votre application peuvent en pâtir.
Dans la plupart des cas, nous vous recommandons d'utiliser la bibliothèque Glide pour récupérer, décoder et afficher les bitmaps dans votre application. Glide enlève la complexité liée à la gestion de ces tâches et d'autres tâches liées à l'utilisation de bitmaps et d'autres images sur Android. Pour plus d'informations sur l'utilisation et le téléchargement de Glide, consultez le dépôt Glide sur GitHub.
Vous pouvez également choisir de travailler directement avec les API de niveau inférieur intégrées au framework Android. Pour en savoir plus, consultez les pages Charger efficacement de grands bitmaps, Mettre en cache des bitmaps, et Gérer la mémoire bitmap.