2012-10-18 1 views
0

QuestionUtiliser Handler et postDelayed mettre à jour ListView

est l'affichage à plusieurs reprises et la suppression des objets Message à un Handler considéré comme acceptable? J'utilise ce mécanisme pour attendre un certain délai après un rappel qui se produit plusieurs fois.

Contexte

J'ai un ListView avec des vues assez complexes. Chaque vue a quelques composants de texte et un ImageView important. J'essaye de résoudre un peu de saccades pendant qu'il défile.

Je l'ai déjà converti pour utiliser le cache de dessin afin de réduire le dessin parasite. J'ai ajouté un mécanisme pour retarder la charge du Bitmap dans l'ImageView jusqu'à ce que le défilement s'arrête.

Ce mécanisme utilise ListView OnScrollListener.onScroll(...) (puisque j'ai trouvé onScrollStateChanged(...) non fiable). Chaque fois que onScroll est le feu, je poste un Message à Handler en utilisant postDelayed(message, 200) après avoir supprimé les messages existants du même type.

Le résultat est un tas de messages et supprime à la Handler et, quand on finit par être traité, toutes les images sont chargées. Je me demande si la publication répétée et la suppression des messages d'un gestionnaire va causer un problème? Je n'en ai pas encore touché mais s'il y a une alternative, j'aimerais l'entendre.

+0

Pouvez-vous publier votre ListAdapter? Je comprends que votre question concerne les gestionnaires, mais je soupçonne que le gestionnaire pourrait aussi avoir un problème. – AedonEtLIRA

Répondre

0

L'ajout et la suppression de messages n'étaient pas coûteux tant que le système n'était pas occupé. Ensuite, il est devenu peu fiable que le fil principal serait attaché au dessin. Au lieu de cela, je suis passé à un mécanisme de désactivation pour le composant qui nécessitait une notification, ce qui semblait atténuer beaucoup le problème.

Questions connexes