La meilleure Façon de mettre en Cache des Données dans Android
J'ai un ArrayList
de coutume, simple Serializable
objets je voudrais cache pour le disque et la lire sur le re-lancement. Mes données est très faible, environ 25 objets, et d'au plus 5 listes donc je pense que SQLite serait exagéré. Dans l'iPhone monde je voudrais utiliser NSKeyedArchiver
et NSKeyedUnarchiver
qui fonctionne très bien. Sur Android, j'ai essayé de le faire avec un FileOutputStream
et ObjectOutputStream
et alors que le résultat est le même, la performance est terrible. Est-il mieux (lire plus vite) pour le cache des petits objets du système de fichiers sur Android?
- Savez-vous qui est la partie la performance de porc?
Vous devez vous connecter pour publier un commentaire.
Pour ce qu'elle vaut, je cache certaines de mes données de Chaîne à disque à l'aide de BufferedWriter/BufferedReader et il est très rapide. De ce fait, il est plus rapide que de stocker les mêmes données pour les SharedPreferences. Le code va quelque chose comme ceci (notez que les choses se passent plus rapidement lorsque vous fournissez taille de la mémoire tampon)
new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file),Charset.forName("UTF-8")));
à la place.et appeler à partir de l'activité
n'oubliez pas d'utiliser write_external_storage autorisations dans le fichier manifest.
Il est difficile de savoir sans profilage, mais ma conjecture est votre mauvaise performance est vers le bas à l'aide de
ObjectOutputStream
. Avez-vous essayé d'écrire votre proprewriteObject(ObjectOutputStream)
etreadObject(ObjectOutputStream)
méthodes que cela peut aider à la performance.Vous pouvez utiliser le
traceview
outil pour voir exactement où l'application est en cours d'exécution lente. Jetez un oeil à cette question pour obtenir des instructions sur la façon d'utilisertraceview
.