2010-11-08 8 views
0

Vous travaillez sur une mise en œuvre de superposition de tuiles personnalisées pour une application Android. J'ai des problèmes avec le filetage des téléchargements d'images en arrière-plan.Google Maps Google - superposition de tuiles personnalisées

Aperçu rapide: J'ai une classe (MapOverlay) qui s'étend Overlay. La méthode draw calcule essentiellement les images (bitmaps) nécessaires et la position x, y pour les dessiner sur l'écran. J'ai alors une asyncTask qui boucle à travers chaque tuiles et télécharge les images si elle n'existe pas sur la carte de stockage (mise en cache locale) puis une fois la tâche Async terminée, je fais ensuite une boucle sur les images et les dessine sur l'objet canevas passé dans la méthode de dessin de MapOverlay. Mais les bitmaps ne sont jamais dessinés. J'ai effectué un débogage rudimentaire en journalisant la largeur et la hauteur de l'élément canvas au moment où la tâche AsyncTask est terminée mais il retourne 0 pour eux, donc je suppose que l'objet canvas n'est plus disponible pour le code s'exécuter dans onPostExecute() de AsyncTask après que la méthode de dessin soit terminée

Sans le thread j'ai eu ce travail plutôt bien, sauf pour le "gel" pendant le panoramique tandis que le téléchargement d'image bloque le fil de l'interface utilisateur. Maintenant, je suis complètement nul en essayant d'obtenir le filetage au travail

+0

Pouvez-vous s'il vous plaît partager un exemple de code pour ce que vous avez fait et comment vous avez fait le chargement des carreaux. Avez-vous également vérifié si la même chose arrive pour zoomIn et Zoo out Raj – Nik

Répondre

0

Avez-vous essayé d'appeler postInvalidate() lorsque la tâche asynchrone a terminé le téléchargement? De cette façon, l'appel dans MapView.draw() obtiendra et dessinera l'overlay téléchargé (c'est-à-dire si votre système de cache fonctionne).

Questions connexes