2010-08-29 8 views
0

Je suis en mode Liste, tous les éléments de la liste (Texte) doivent être mis à jour à partir d'un service Web. Mon application peut interroger le service Web pour récupérer tous les éléments de la liste à la fois ou peut interroger pour extraire un élément de liste à la fois. J'ai les requêtes suivantes 1) Si j'interroge le service Web pour récupérer tous les éléments de la liste à la fois, il faut environ 15 secondes pour le télécharger et l'afficher dans la liste. L'utilisateur peut penser que l'application ne répond pas. 2) Si j'interroge le service Web pour chaque élément de liste, lorsque l'utilisateur fait défiler vers le haut ou vers le bas plusieurs requêtes sont envoyées. Je télécharge donc des éléments que l'utilisateur ne verra probablement pas. si la liste est défiléeList View Design Pattern

S'il vous plaît suggérer un bon modèle de conception pour un tel scénario.

Répondre

1

Ce que vous pouvez faire est d'avoir les éléments suivants

  • Un fond Android service qui télécharge des produits frais à partir de votre webservice à des intervalles de temps donnés
  • Une base de données SQLite et selon ContentProvider qui stocke/récupère les éléments de la DB
  • une activité de liste qui récupère un curseur sur les éléments de la ContentProvider enregistré vous avez écrit

Fondamentalement, le service d'arrière-plan va stocker les éléments dans la base de données sqlite locale via le ContentProvider que vous écrivez. L'activité récupère ensuite un curseur sur les éléments, à nouveau via ContentProvider.

Cela vous donne les avantages que

  • il sera rapide, en collaboration avec des curseurs et des mécanismes standard
  • utilisateurs seront encore voir les articles aussi si la connectivité temporaneously lâche
  • votre liste sera automatiquement rafraîchir les éléments étant enregistrés en tant qu'observateur sur ContentProvider
+0

Considérons le cas d'utilisation suivant. Si j'ai une liste de 100 articles. Je commence à télécharger l'élément de liste en commençant par le haut, mais l'utilisateur fait immédiatement défiler vers le bas de la liste. L'utilisateur doit attendre que la requête du 100ème élément soit envoyée au service Web. – SpunkerBaba

+0

Personnellement, en prenant en compte que cela prend jusqu'à 15 secondes pour télécharger tous les éléments du webservice, je les téléchargerais TOUS dans le service d'arrière-plan, mais pas pendant le défilement de la liste. Ne devrait pas être un problème. Le chargement pendant le défilement influe considérablement sur les performances. – Juri

Questions connexes