2015-04-11 9 views
0

Je développe une application où je stocke mes données dans une base de données en ligne en utilisant HTTP POSTO et GET. Je dois implémenter une certaine fiabilité à mon logiciel, donc si l'utilisateur appuie sur le bouton, et qu'il n'y a pas de connexion, les données doivent être stockées dans quelque chose (fichier? Sqlite?) Et ensuite quand la connexion est rétablie demande d'envoi de données.Fiabilité Android lorsque la connction est désactivée

Des conseils ou des morceaux de code pour me montrer comment faire? Merci.

Répondre

0

Cela semble bon et assez avancé pour moi. Juste aller. Vous utilisez un db sqlite local comme "cache". Pour rester simple, n'implémentez aucune logique à ce sujet dans le code normal de votre application. Utilisez simplement la base de données locale. Ensuite, séparément, vous codez un synchroniseur. Celui-là vérifie la connexion en ligne et synchronise la base de données sqlite locale avec une base de données distante, peut-être mysql.

Cela devrait être parfaitement adapté à toutes les applications qui ne nécessitent pas l'échange immédiat des données avec d'autres processus tout le temps.

Il y a cependant un problème: les faibles performances de sqlite sur des ensembles de données plus volumineux. C'est un problème avec toutes les solutions de bases de données de fichiers uniques. Cette approche n'est donc probablement valable que pour de petits ensembles de données, ou si vous pouvez réduire l'utilisation de la base de données locale à seulement une partie des données totales, peut-être seulement les données critiques. Une autre solution peut consister à utiliser des jointures sur deux bases de données distinctes, l'une locale et l'autre distante. Mais de telles choses augmentent vraiment la complexité du code, alors pensez trois fois si cela est vraiment nécessaire.

+0

Merci d'avoir répondu. Je ne peux pas utiliser le sqlite pour la mise en cache toujours, car mon application a besoin de mises à jour immédiates sur la base de données en ligne. Sur d'autres fonctions, il n'y aurait pas de problème s'il n'y a pas de connexion, mais dans une fonction particulière j'ai besoin de la fiabilité, car l'utilisateur pourrait probablement perdre ses données. Donc la solution que je pensais est la vôtre, créer une base de données sqlite (très petites données à gérer) où je mets mes données et s'il y a une connexion, j'y enregistre mes données et là où est en ligne, stockez sur mysql db. – xcsob

+0

Ce serait une approche de cache classique. – arkascha

+0

Une autre question, je crée mon sqlite db sur la première activité (pour stocker localement l'information de l'utilisateur). Je crée des tables dans la méthode create du gestionnaire de base de données, de sorte que les tables sont créées dans la première activité. Maintenant, comment puis-je obtenir la même instance de DB dans une autre activité? – xcsob