2010-07-13 7 views
1

Nous sommes censés mettre en cache des données textuelles et audio dans notre application jusqu'à ce que l'appareil soit démarré ou maximum de deux jours, selon la première éventualité . Pour avoir une perspective sur les données à mettre en cache, notez que nous sommes pour stocker environ 200 en-têtes de texte contenant environ 10 champs, chacun de longueur 30 octets et environ 20 fichiers son chacun environ une minute.Approche pour mettre en cache une grande quantité de données textuelles et audio dans l'application Android

Nous obtenons les données textuelles en analysant XML et ensuite nous les conservons dans ArrayLists. Les fichiers audio sont directement écrits dans l'espace de stockage de l'application à l'aide de File I/O (et non sur le répertoire SDcard ou Apps Cache).

Cette application doit être exécutée sur les appareils fonctionnant sous Android 1.5 ou version ultérieure.

Je comprends, et s'il vous plaît corrigez-moi si je me trompe, que nous pouvons mettre en cache les fichiers sur SDcard ou dans l'application ou dans le répertoire applications cache.

J'ai les questions suivantes concernant la façon dont nous approchons de Caching?

  1. Si nous persistons les données textuelles dans les applications de base de données SQLite ou devrions-nous utiliser le mécanisme sérialisation Java et persisteront la liste des objets (qui constituent des éléments Serializable) dans l'application ?
  2. Où devrions-nous écrire les données de texte/fichiers son - à l'intérieur application, cache ou carte SD?
  3. Peut-on enregistrer tous ces éléments dans le répertoire de cache des applications? Quelle peut être la taille du répertoire cache en ce qui concerne le ?
  4. Pouvons-nous spécifier une durée à Android Runtime pour laquelle un cache est conservé? Ou devrions-nous le faire manuellement?

S'il vous plaît aider et conseiller.

Merci. Note: ont également posé cette question here.

Répondre

2
  1. SQLite db. De cette façon, vous économiserez de la mémoire et pourrez utiliser CursorAdapter s.
  2. les mettre sur SD, la mémoire interne est très limitée
  3. j'éviter d'utiliser le répertoire du cache de l'application du tout, # 2
  4. Vous devez comparer les horodatages de modification de fichier contre l'horodatage actuel vous. Je fais cela dans ApplicationonCreate().

J'utilise

  • un récepteur sur mesure android.intent.action.BOOT_COMPLETED le cache d'initialisation dir sur la carte de montage
  • une classe d'aide pour le cache lecture/écriture/nettoyages, les méthodes de sauvegarde/restauration BitmapDrawable s comme PNGs , créant un hachage MD5 pour le nom de fichier mis en cache.
+0

Merci pour votre réponse Alex.Quelques questions: Où sont stockées les bases de données SQLite? Pouvons-nous créer la base de données sur SDcard? – Samuh

+0

1. Sous un répertoire nommé après app sur SD. Bien sûr. Regardez l'implémentation 'SQLiteOpenHelper', puis utilisez' SQLiteDatabase'. – yanchenko

Questions connexes