Question

Je développe une application qui envoie périodiquement des informations à un serveur externe. Je crée une copie locale des données envoyées, à des fins de sauvegarde.

Quelle est la meilleure option pour stocker les données en termes de gain de vie de la batterie ? Chaque soumission de données est un objet sérialisé (la classe a 5 champs, comprenant une date, des nombres et des chaînes) d’environ 5K-10K.

Une autre idée?

Était-ce utile?

La solution

Je n'ai aucune idée de la durée de vie de la batterie, mais un critère serait-il plus facile à gérer? Moins d'opérations de gestion des données signifierait moins de cycles du processeur et, par conséquent, une autonomie de la batterie plus longue.

Je dirais que l'option SQLite est plus facile. Vous pouvez placer une colonne de date dans la table SQLite qui stocke vos données, ce qui permet de supprimer les anciennes soumissions dont vous n’avez plus besoin, et qui sont toutes gérées via la bibliothèque SQL native. La gestion de tout un lot de fichiers - ou pire d’un seul fichier - avec votre propre code Java serait beaucoup plus pénible.

De plus, vous pouvez écrire des données dans la base de données et les oublier jusqu'à ce que vous ayez besoin de les relire. Si vous stockez des données dans des fichiers, vous devrez déterminer quand lire et écrire des fichiers en termes Cycle de vie d'une application Android . Si la batterie vous inquiète, vous ne voudrez probablement pas écrire des fichiers plus souvent que vous ne le devriez, et mettre en cache les données en mémoire, mais vous devez vous assurer de ne pas perdre de données lorsque votre application est en pause ou détruite. . À mon avis, il est beaucoup plus facile d'utiliser une base de données SQLite et de ne pas s'inquiéter de cela.

Autres conseils

Je ne crois pas que le fait d’utiliser SQLite ou un fichier importe peu, car la base de données SQLite est tout simplement un fichier sur le système (stocké dans /data/data/<your_package>/databases/). Vous devrez vous engager à la base de données au bon moment, tout comme vous auriez besoin de sauvegarder un fichier sur le disque dur au bon moment. En d’autres termes, d’une manière ou d’une autre, vous pouvez utiliser autant d’écritures sur le disque dur.

Je pense que ce que vous choisissez dépend davantage du type de données que vous enregistrez. Si vous avez besoin des pouvoirs conférés par une base de données (comme les requêtes), utilisez bien SQLite. Cependant, si vous n'avez pas besoin d'une base de données ou si vous avez des données qui varient énormément (et qui ne peuvent pas être facilement configurées dans une base de données relationnelle), j'utiliserais des fichiers.

Ce que je peux vous assurer, c’est que vous ne devriez pas utiliser la sérialisation pour enregistrer un fichier, si c’est la route que vous choisissez d’aller. La sérialisation Android est lente, lente, lente et crée des fichiers volumineux. Il est bien préférable d'écrire votre propre format XML ou JSON pour des raisons de performances.

Votre application est-elle multithread? Si vous avez plusieurs threads accédant au magasin de données, j'utiliserais SQLite. Laissez SQLite s’inquiéter des problèmes de verrouillage.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top