2013-08-13 10 views
0

Je travaille sur une application Android qui tire une longue liste de noms de recettes dans une vue de liste, que l'utilisateur peut filtrer, puis cliquez sur pour obtenir plus détails. La liste de recette initiale va contenir environ 1000 entrées et sera stockée dans une base de données mySQL distante en constante évolution. En cliquant sur une seule recette dans la liste, la recette complète sera affichée.Android Database Design, pour utiliser SQLite ou tout simplement mySQL & JSON

Ma question est la suivante. Est-il préférable pour moi d'avoir un service d'arrière-plan qui tire la liste complète des recettes dans une base de données SQLite locale ou devrais-je simplement interroger la base de données mySQL chaque fois que la vue de la liste est tirée? Je ne suis pas trop inquiet à propos de l'utilisation hors ligne, juste en optimisant ma structure de données pour permettre une grande base d'utilisateurs.

Répondre

0

Pourquoi ne pas faire ce qui suit:

Demandez à votre base de données SQLite magasin une date qui représente les dernières données du temps a été récupéré à partir du service Web MySQL. Ensuite, sur votre base de données MySQL, assurez-vous de stocker la date d'ajout de la recette avec chaque recette. Lorsque votre utilisateur lance l'application, vous pouvez créer une requête qui n'obtient que des données plus récentes que la date stockée dans votre base de données SQLite. Cela réduira considérablement les temps de téléchargement et le stress du serveur. Comme vous savez que la liste initiale de recettes contiendra environ 1000 entrées, vous pouvez l'inclure dans votre fichier APK. De cette façon, dès le début, les requêtes vers le serveur web seront réduites. Au fil du temps, vous pourrez décider de mettre à jour les entrées locales de votre application dans différentes versions.

Vous pourriez faire vos transactions avec un service d'arrière-plan, mais je ne le ferais pas. Vos clients pourraient ne pas aimer les processus inconnus qui consomment leur batterie. Pour les petites transactions de données, vous pouvez simplement lancer une boîte de dialogue de progression ou tout faire pendant un écran de démarrage.

Espérons que ça aide :)

+0

Pouvez-vous fournir des références qui vous donneront un indice sur la façon de faire ce flux? Merci –

+0

Vous devrez créer votre propre point de terminaison RESTful sur un serveur Web pour gérer une demande et renvoyer des données, mais les transactions en arrière-plan peuvent être effectuées avec ceci: https://blog.nraboy.com/2014/10/use-broadcast -receiver-background-services-android / –