30 votes

Google IO Reste modèle de conception, Fini ContentProvider et coincé maintenant

Donc après avoir vu le très connaissent la vidéo sur ce sujet, j'ai décidé d'aller avec motif de conception B. à l'Aide d'un contentprovider avec servicehelper.

google design pattern on rest

Bref, j'ai les fichiers suivants:

  • MyProvider
  • Mabase
  • Mycontract

dans l'activité que je peux maintenant obtenir la contentresolver et interroger le fournisseur. Tout fonctionne très bien jusqu'à présent.

Maintenant, j'ai besoin de synchroniser mon contentprovider pour récupérer les données de mon API REST. J'ai donc besoin de mettre en œuvre une aide de service de service et de Repos de la méthode. L'étude de la Google IO app a m'a beaucoup aidé, im novice avec android, il est donc encore difficile à comprendre.

Je vois que Google utilise RemoteHandlers pour traiter les données externes, je suppose qu'ils sont le Processeur classes dans le diagramme?

Ce que je ne comprends pas c'est comment je peux mettre en œuvre les servicehelper + service pour obtenir les données à partir du réseau.

  • Où dois-je appeler le service de l'aide?
  • que fait le service et l'aide nécessaire pour faire exactement?
  • existe-il des exemples de bonnes exacte de ce modèle de conception?

J'ai lu plusieurs sujets sur pile à ce sujet, tout en suggérant des méthodes différentes. J'ai trouvé un exemple qui déclare une restprovider et puis myProvider a prolonger le fournisseur. Je n'aime pas ces solutions, et souhaitez suivre cette structuré modèle de conception. Im espérant que vous les gars pouvez m'aider!

Edit: la source du Projet est disponible: https://github.com/samvdb/TracknTrace

20voto

ChrLipp Points 6445

Dans ma compréhension du modèle est:

  • N'affichez pas un vide d'activité et de charger le contenu en arrière-plan. Lorsque le chargement échoue, vous ne peut pas afficher quoi que ce soit.
  • Au lieu d'afficher les données stockées dans la base de données accessible par l'intermédiaire d'un fournisseur de contenu et d'un adaptateur - ce qui garantit que l'utilisateur de toujours voir le contenu
  • Dans le fond de récupérer les nouvelles données, une fois que les données sur le téléphone de l'activité est automatiquement mis à jour via l'adaptateur

À vos questions (j'ai changé l'ordre):

Où dois-je appeler le service de l'aide?
- Je choisir Un modèle à partir des Veillées de parler. Dans ce cas, l'appel dépend de votre application. Vous pourrait déclencher la mise à jour au démarrage de l'application, lorsque l'activité est créée ou lorsque l'utilisateur sélectionne un bouton de mise à jour. Je choisirais à la création d'activités.

Vous avez choisi votre modèle de B. Dans ce cas, il est clair que le fournisseur de contenu a pour déclencher la mise à jour. Quand? Pour obtenir de nouvelles données: au moment de la création ou après le premier accès en lecture. Je voudrais utiliser le temps de création. Pour créer, mettre à jour, supprimer après l'action correspondante à votre fournisseur de contenu.

Existe-il des exemples de bonnes exacte de ce modèle de conception?
De mon poste à http://stackoverflow.com/a/8693919/734687: la seule implémentation open source de référence que je connais est disponible sous http://datadroid.foxykeep.com. C'est une bibliothèque qui vous pouvez utiliser dans votre propre application. L'architecture est expliqué sous /présentation - assurez-vous de le lire.

que fait le service helper besoin de faire exactement?
Si vous regardez les diapositives à la diapositive 19 il est un singleton qui encapsule l'appel du service et gère les appels asynchrones via la demande de l'id.

que fait le service doit-il faire exactement?
Le service (diapo 17 dans la présentation) s'assure juste que l'action est exécutée en arrière-plan.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X