Les images se chargent très lentement ... Je pensais utiliser le " Le chargeur d'images universel "a mis en cache les images sur l'appareil et que cela les ferait apparaître simplement faire défiler la vue si vous les avez déjà regardés (ou au moins près de cela). Mais - lorsque vous faites glisser vers le haut / bas, aucune des images ne sont là, puis 3 à 5 secondes plus tard, les images commencent à apparaître (comme s'il le téléchargeait de nouveau les téléchargements) p> Je change la visibilité Parmi les boîtes minipulées à la volée, mais cela fonctionne parfaitement - ils ne semblent pas changer - ils font défiler juste la vue ou non, sans clignoter ni quoi que ce soit. (Mais alors les images n'apparaissent pas encore quelques secondes). P> J'ai testé en supprimant mon script PHP après avoir défilé ... Quand je fais défiler vers la prev, les images ne font pas Montrez-vous - me faire supposer que c'est chargé de mon script PHP à chaque fois. P> mais selon Les docs : strong>" UTILISEFREQLIMITIMITHMEMORYCACHACHACHACHACHE (Le bitmap le moins fréquemment utilisé est supprimé lorsque la taille de la taille du cache est dépassée) - Utilisé par défaut " P> Détails: Fort > p> dans mon aussi loin que les images étant incorrectes - ce n'est pas souvent, ce n'est pas souvent, Mais parfois, tout en faisant défiler, je verrai 2 de la même image, et quand je regarde les articles, ils ne sont pas du tout liés (c'est-à-dire aucune chance d'avoir réellement la même image) alors - je fais défiler de l'écart, et retour, et ce n'est plus l'image incorrecte. P> Note: Je suis nouveau à Java / Android - Vous avez probablement déjà remarqué cela. P> update: strong>
Mon fichier manifeste a: p> mais le dossier de cache que j'ai trouvé est complètement vide: p> articleenterryadapter.js code> J'ai: p>
4 Réponses :
J'économisais des problèmes similaires avec des images dans la vue de la liste. Éventuellement Cette réponse corrigera votre mauvais problème d'image.
Je viens de télécharger le projet d'échantillon avec Universalimageloader et il présente le même comportement que vous décrivez. P>
Quelques notes jusqu'à présent de regarder à travers le code source. P>
ImageLoaderConfiguration imageLoaderConfiguration = new ImageLoaderConfiguration.Builder(this)
.enableLogging()
.memoryCacheSize(41943040)
.discCacheSize(104857600)
.threadPoolSize(10)
.build();
imageLoader = ImageLoader.getInstance();
imageLoader.init(imageLoaderConfiguration);
La mauvaise image incorrecte ne se produit pas très souvent - le problème plus important est la vitesse lente des images en cours de chargement. S'ils sont mis en cache, ils ne devraient-ils pas simplement faire glisser la glissade par opposition à être retardée par plusieurs secondes? Bien que j'apprécie la note et j'apprécie les autres questions de questions.
Sans cette ligne, l'image précédente dans cette vue recyclée s'affiche jusqu'à ce que la nouvelle image soit chargée. Je l'ai pris, et il y a toujours un retard. Il ne semble pas que rien ne soit en cache sur l'appareil - si je charge l'application, faites défiler vers le bas, supprimez mon code PHP, puis faites défiler la sauvegarde, les images n'apparaissent pas.
Les images ne sont pas mises en cache sur le disque (je les aimerais). Je vais essayer vos suggestions et je suis plein d'espoir, mais selon les documents, la valeur par défaut devrait les mettre en cache sur le disque. Mes images sont minuscules - 100x100px
ImagEloaderConfiguration vous permet également de spécifier la taille d'image maximale. Je n'ai pas essayé cette option mais cela pourrait aider.
Je suis perdu - je pensais que c'était déjà une tâche asynchreuse ... ça ne tient rien - les images ne font que se charger lentement - qu'est-ce que je manque? Aussi - comment puis-je l'obtenir pour cacher les images localement - c'est la grande partie de mon problème actuellement. Mes images sont minuscules 100x100px
AsynccTask est une API Android fournie à la méthode de faire quelque chose sur un fil d'arrière-plan et de renvoyer les résultats sur le fil principal. Ils ont tendance à être assez vite. L'Universalimageloader a 3 threads par défaut effectuant le travail de téléchargement et une pour mettre à jour la vue d'image sur le fil principal. Donc, oui, l'UIL et mon retravailleur à l'aide de la classe d'asyncaptage sont «asynchrones», mais je pense que leur méthode laisse beaucoup à désirer en ce qui concerne la performance.
Les paramètres suggérés ne changent visiblement rien. Je vais volontiers essayer votre version modifiée, mais cela ne corrige toujours pas le problème principal - ce n'est pas la mise en cache localement.
Êtes-vous sûr de ne pas mettre en cache localement? J'ai parcouru le code et il tire les données du disque, il est juste lent à charger l'imageView, vous donnant l'impression qu'il ne met pas la mise en cache sur le disque. Veuillez tester la version i construite. Je viens de le tester sur Samsung Galaxy S2 et c'était rapide.
Lorsque j'ai commenté mon script PHP, aucune image ne s'est produite. (Après avoir déjà défilé de haut et de bas de nombreuses fois et que toutes les images se chargent au moins une fois)
D'ACCORD. Eh bien, essayez cela avec ma version. Si cela fonctionne, je peux nettoyer le code plus et faire une certaine réparation de bugs.
Pourquoi votre version fonctionnerait-elle - avez-vous changé quelque chose sur la mise en cache?
:) Fondamentalement, le code fonctionne comme ceci ... Vous passez dans une vision d'image et une URI. Ensuite, le fil d'arrière-plan est censé vérifier le bitmap correct et le renvoyer au fil principal qui met à jour l'imageView avec le bitmap récupéré. Le bitmap peut être de la mémoire, du disque ou du cache. J'ai changé le bit frontal qui récupérait le fichier du cache ou de l'Internet et la fixant à la vue Image.
J'ai compris cette partie ... mais cela ne résout pas mon problème principal - les images ne sont pas en cache. (réponse mise à jour pour afficher le dossier de cache vide)
Laissez-nous Continuer cette discussion en chat
Votre chargeur d'image universel modifié n'est pas bon. J'ai déjà essayé cela
Pouvez-vous s'il vous plaît aidez-moi à comprendre le problème
Je pense que vous avez oublié d'appeler .defaultdisplayImageOptions (displayimageOptions) code> Lorsque vous construisez votre ImagEloaderConfiguration code>. Si vous ne le faites pas, ces displayimageOptions code> ne sont pas appliqués du tout. J'avais la même lenteur, qui s'est éloignée après avoir appliqué le displayimageOptions code>.
Il y a plus de 2 ans. Je devine beaucoup changé
Je soupçonne que le redimensionnement D'abord, je ferais le reste après em> le chargement de l'image: sous-titre, description et tout. Parce que si le chargement de l'image prend trop de temps, il y a un effet plus instantané, si une description et tout le reste apparaissent ensemble. Ordinairement, votre ordre des déclarations est bien. Em> p>
La réponse de @cameronlowellpallmer s'occupe des images et la mise en cache commutées. P>
Les fichiers REDIZE.PHP sont mis en cache et se chargent instantanément lorsque vous appuyez sur l'URL dans un navigateur (puisqu'il s'agit de fichiers minuscules). Je ne sais pas ce que vous entendez par "repose après l'image chargée ..." (N'oubliez pas que je suis un noob :)
J'ai déplacé l'image trucs avant le titre ... etc Stuff - pas de changement.
(Et plus important encore, les images sont censées être mises en cache sur le périphérique - si cela frappe mon script PHP à chaque fois, c'est un problème pour lui-même!)
J'ai mis des éclaircissements dans ma réponse. Si vous avez la lutte contre la PHP, vous pouvez vérifier le comportement de la mise en cache sur Android et si le redimensionnement sert de sa cache i>.
C'est a) ne pas mettre en cache localement ou b) n'utilisant pas le cache local - lorsque je retire mon code PHP (après le défilement d'un peu), les images ne se chargeont plus du tout.
Une solution alternative est "RemoteImageView" à partir du projet Ignition Open Source. P>
Effectivement, RemoteImageView étend ImageView et fait toutes les récupérations / la mise en cache pour vous dans les coulisses. P>
Bien que cela ne résoudra pas nécessairement votre problème que vous avez répertorié, cela pourrait valoir la peine d'enquêter en tant que solution alternative. P>
Edit: Je recommanderais vivement Picasso si vous avez toujours besoin d'une solution d'image à distance. J'ai remplacé RemoteImageView dans mes applications avec Picasso: http://square.github.io/picasso/ p>
Y a-t-il des sites d'instructions / de tutoriels pour cela?
L'exemple d'activité dans le projet d'allumage a une utilisation assez simple ici: Github.com/kaeppler/ignition/blob/master/Indition-core/...
Cette classe a fonctionné pour moi: exemple d'utilisation: p>
Qu'est-ce que
getsworkingview (convertview); code>?@Sherif Elkhatib - ajouté