2011-02-07 3 views
3

Je développe une application Android et n'arrive pas à trouver la meilleure façon d'implémenter un cache d'image à 2 niveaux qui peut être partagé entre plusieurs activités avec une seule application.Android: partager un cache d'images parmi les activités

Exemple:

application dispose de 3 activités (A, B et C) et pour les besoins du raisonnement permet de dire que A appelle appels B et B appelle C et C A. Chaque activité affiche une image téléchargée à partir le web et j'utilise asynctask pour télécharger et afficher des images w/dans chaque activité - assez facile. Maintenant, je voudrais ajouter un cache d'image pour éviter plusieurs téléchargements de la même image.

À l'heure actuelle, chaque activité démarre une nouvelle instance d'une asynctâche simple qui télécharge l'image et met à jour la vue de manière appropriée. Évidemment, il est assez facile de mettre à jour l'asynctask de base pour vérifier le cache d'image avant de procéder au téléchargement et de mettre à jour le cache une fois le téléchargement terminé, mais je suis coincé sur comment créer et initialiser le cache. Toute réflexion sera apprécié.

+0

pourquoi ne pas mettre les images sur la carte SD? – androidworkz

Répondre

2

Vous pouvez ajouter à votre manifeste de l'application:

application android: name = "MyApplication" (...)

Vous pouvez alors créer une classe qui a le nom " Mon application". Vous pouvez ensuite utiliser cette classe dans vos activités. Vérifiez, avant d'effectuer l'appel asynchrone, si vous avez déjà une image correcte à utiliser. Si vous avez, vous utilisez celui "mis en cache", sinon, vous pouvez en obtenir un nouveau. Vous pouvez essayer quelque chose comme ça (dans ce cas pour obtenir des chaînes aléatoires):

ArrayList myStrings = ((MonApplication) this.getApplication()) getRandomStrings();.

J'espère que cela vous a aidé. :)

Edit: Ne pas oublier de la créer votre "MyApplication" comme ceci:

MonApplication public class étend application

+0

Merci. La clé était d'étendre la tâche d'application. – tsr

+0

Si vous avez accepté ma réponse, veuillez la marquer. :) – Peres

Questions connexes