2017-09-15 16 views
0

Je veux construire une application Android qui doit fonctionner avec une faible connectivité Internet ou sans aucune connectivité Internet.Application mobile qui traite d'une connexion Internet faible

La principale caractéristique de cette application est d'enregistrer et d'envoyer des données comme des photos et d'autres informations importantes à un serveur. Mon problème concerne l'implémentation de ce système en mode déconnecté et comment construire une synchronisation efficace entre le serveur et le client face à une connexion Internet faible.

Merci

+1

Alors ... quelle est la question. Nous n'allons pas concevoir l'application pour vous. –

+0

Je ne veux pas que vous conceviez l'application. Je veux des informations utiles pour ce problème parce que je ne pouvais pas trouver quelque chose pour que cela soit mis en œuvre efficacement – Dorin

+1

peut-être utiliser une file d'attente pour les tâches de synchronisation? https://github.com/yigit/android-priority-jobqueue –

Répondre

0

J'espère que cela aide. Probablement n'est pas la meilleure solution, mais en raison du manque d'idées ou de solutions là-bas (comme vous l'avez mentionné) je suis venu avec cela.
J'ai quelque chose comme ça sur une application. J'envoie des données à ma base de données principale via webservices, donc ce que je l'ai été, je créé une table (SQLite) avec 3 champs:
1) ServiceFunction (texte)
2) ServiceParameters (texte)
3) traité (Int, 1 ou 0, par défaut 0)

Étant donné que mes utilisateurs mobiles n'ont pas besoin de savoir si l'enregistrement a été sauvegardé ou non, je sauvegarde à chaque événement la méthode de service web que je dois appeler et ses paramètres. Avec ce que j'ai une sorte de file d'attente pour ce que j'ai en attente d'envoyer à mon serveur (base de données MySQL, Webservices sont sur C#)
J'ai en arrière-plan un IntentService exécutant chaque minute ou alors le traitement de cette "file d'attente". Je récupère tous les enregistrements en attente (Processed = 0), exécute la méthode webservice avec ses paramètres et si une erreur est détectée je casse la boucle et enregistre le problème, si tout va bien, je mets à jour le champ Processed avec 1. Cette logique fonctionne sans problème, pas de perte de données ou quelque chose sur environ 150 appareils, j'envoie des données simples à stocker dans la base de données (nous ne parlons pas des pratiques de stockage de données BLOB sur Db ou sur FS)

J'espère que cela vous donne une idée générale de ce que vous devez mettre en œuvre sur votre solution.