2013-08-01 4 views
0

Mon application utilise 29 images dans 2 classes différentes (et mises en page). Dans une mise en page, il y a 1 vue d'image qui change entre au plus 25 des images, puis l'autre mise en page est une vue de défilement qui contient toutes les images où 3 ou 4 au maximum sont visibles sur l'écran à la fois. Auparavant, les images étaient enregistrées au format .jpg et chacune mesurait 720 * 540 et avait une taille d'environ 200-300kb. Mon application a rencontré des problèmes de mémoire après être passé entre mes deux mises en page qui utilisent les images; il utilise plus de 100 mb. J'ai fait des recherches sur les images bitmap et les ai essayées pour mes images, mais elles n'ont pas beaucoup aidé parce que je n'ai toujours pas de problèmes de mémoire et elles ont augmenté la taille .apk de près de 3 fois. Quel est le moyen le plus préféré pour charger des images, est-ce que c'est un dessin d'un .jpg ou d'un bitmap ou d'une autre manière? Toute suggestion serait appréciée.façon la plus efficace d'afficher des images

+0

Je suis un peu confus. Pourquoi bidmap augmente les fichiers apk? Nous les décodons dans le code java, non? Ce lien pourrait vous être utile. http://developer.android.com/training/displaying-bitmaps/manage-memory.html –

+0

Les fichiers bitmap sont beaucoup plus volumineux, les fichiers bitmap sont décompressés et les fichiers jpg sont compressés – ez4nick

+0

Je sais que bitmap n'est pas compressé. Mais nous ne les avons pas dans le fichier apk, non? Nous utilisons BitmapFactory pour les décoder uniquement lorsque nous exécutons l'application. Le fichier apk a seulement jpg au lieu de bitmaps –

Répondre

2

lorsque le bitmap est en mémoire, il est décompressé. le format original n'a pas d'importance. vous pouvez compter sur chaque image en prenant environ largeur * hauteur * 4 octets de mémoire. par exemple, chacune de vos images 720 x 540 prendra ~ 1,5 Mo de mémoire.

peu importe d'où vous les chargez, au moins en ce qui concerne la quantité de mémoire requise.

lire maintenant ce,

http://developer.android.com/training/displaying-bitmaps/cache-bitmap.html

+0

ok donc si je comprends bien le lien suggère de mettre en cache toutes les images et de ne charger que les images qui sont actuellement sur l'écran? – ez4nick

+1

oui, toutes les images devraient provenir du cache. Le mieux est de mettre un wrapper autour de cette classe qui soit provient du cache ou charge à partir de la source et insère dans le cache. et oui, généralement vous auriez une vue qui utilise un adaptateur. dans la méthode "get view" de l'adaptateur, vous chargez l'image ... ce qui signifie qu'elle provient du cache ou qu'elle est chargée depuis la source. –

+0

ok merci pour l'info. Je suis sûr que plus de recherches je serai en mesure d'accomplir cette – ez4nick

0

Vous pouvez lire le code source de la galerie du système, vous pouvez tout à fait comprendre le fonctionnement bitmap. Lorsque vous obtenez une image à la première fois, vous devez décoder le fichier d'origine et l'enregistrer dans le fichier de cache. Ensuite, pour la prochaine fois, vous venez de décoder le fichier cache, ce qui est plus rapide. Votre mémoire est limitée. Ne vous attendez pas à stocker toutes vos bitmaps, juste le bitmap que vous voulez montrer sur l'écran. La taille de la vignette est beaucoup plus petite que l'image complète. Donc, il n'y a pas de problème si vous voulez mettre 8 ~ 10 miniatures à l'écran. Lorsque les utilisateurs cliquent sur la vignette pour parcourir l'image complète, vous pouvez charger l'intégralité de l'image en mémoire et recycler les autres bitmaps.

Questions connexes