2009-12-30 4 views
1

Je suis beaucoup d'aller chercher des vignettes dans mon application à partir d'un serveur distant et chargement paresseux ceux-ci dans une vue de liste.Quel est l'endroit idéal pour mettre en cache des images?

L'image va chercher exécuté dans un AsynTask d'arrière-plan et une fois rempli les images extraites sont stockées dans une table de hachage en utilisant SoftReferences.

Cela fonctionne très bien, mais quand les images dans le cache devient GC'd, les récupérations doivent être ré-exécuter.

je aurais pu les stockées sur la carte SD donc il n'y aurait pas de re-extraction.

Mais je n'ai pas adopté cette approche à cause du fouillis que cela créerait sur la carte SD.

Y a-t-il peut-être des alternatives à ces dossiers temporaires comme ceux qui peuvent être effacés lorsque l'activité/l'application se termine/se termine?

Quel est le "lieu idéal" pour mettre en cache des images? Tout conseil, exemple de projet, ou pointeur serait apprécié.

Répondre

5

Vous devez vérifier les fichiers d'options de stockage de données:
http://developer.android.com/guide/topics/data/data-storage.html
Les fichiers sont enregistrés dans le répertoire des applications, donc il n'y a pas de gâchis partout. Les fichiers seront finalement supprimés avec l'application. Vous pouvez également implémenter une méthode qui effacera le cache lorsque l'application démarre (par exemple, supprimer des fichiers de plus de 2 semaines).

0

Vous devriez être en mesure de localiser un SQLite DB sur la carte SD. Cela vous permettrait d'avoir une interface/cache assez propre tout en gardant les données hors de la mémoire interne très limitée du téléphone. Vous pouvez spécifier l'emplacement du DB en appelant openOrCreateDatabase (chemin de chaîne, fabrique SQLiteDatabase.CursorFactory). Il est peut-être plus de travail que vous souhaitez mettre, mais vous devriez être en mesure d'effacer le DB ous lorsque vous application est déchargée avec une ligne ou deux de code.
Plus de la documentation ici: http://developer.android.com/reference/android/database/sqlite/SQLiteDatabase.html

Questions connexes