2010-06-24 6 views
1

En Virgil Dobjanschi talk lors de Google I/O, il a mentionné l'utilisation Services pour faire la récupération, puis en utilisant un rappel pour notifier le Activity lorsque cela a été terminé. Il n'est jamais entré dans les détails sur la façon de mettre en œuvre ce rappel et je n'arrive pas à trouver quelque chose d'utile sur ce sujet n'importe où.Services Android et RESTful

Je pense qu'il a dit que vous n'aviez pas besoin d'implémenter la liaison du tout?

Des indices?

Répondre

1

Vérifiez la Google I/O 2010 app. Il utilise le modèle qu'il faisait référence. Il utilise l'option # 2 de la réponse de CommonsWare.

+0

Merci! Je n'ai jamais réalisé que cette application utilisait sa méthode. Ce qu'il fait, c'est passer une interface d'écoute comme un parceable, ce que je ne savais même pas était possible. – alexanderblom

8

Option 1: Service envoie une émission Intent, que les Activity prises par un BroadcastReceiver enregistré via registerReceiver().

Option n ° 2: Si le Activity lie au Service, ont la Activity passer un écouteur au Service, que le Service invoque lorsque le travail est terminé.

Option 3: Service ne fait pas beaucoup, mais les appels ContentProvidernotifyChange() lorsque les changements de données, qui peuvent Ripple à travers la Activity et/ou son Cursor sur les données.

Option 4: Singletons, qui devraient être évités.

...

Option # 237: Service envoie une lettre par FedEx au Activity. :-)

...

Tout cela étant dit, une fois qu'ils libèrent l'application Twitter en open source, vous saurez avec certitude ce que l'application Twitter fait.

+0

Conformément à la réponse de Rponds, l'application Google I/O passe un écouteur en tant qu'application parcellaire. Était-ce ce que vous vouliez dire avec l'option n ° 2 ou vouliez-vous dire une liaison complète? – alexanderblom

+0

Non, l'option 2 était une liaison complète. Option ... umm ... # 74 utilisait 'ResultReceiver'. Franchement, je suis stupéfait de ce choix, puisque ResultReceiver utilise AIDL, et on nous a dit à plusieurs reprises de ne pas l'utiliser pour les opérations locales en raison de problèmes de surcharge. Peut-être qu'il y a quelque chose de spécial à propos de 'ResultReceiver' que je ne connais pas. – CommonsWare

+0

Suivi rapide sur ceci: AIDL n'ajoute pas de surcharge pour l'accès local. Ils détectent que le client et le serveur sont dans le même processus et acheminent les choses directement. Par conséquent, mes craintes à propos de ResultReceiver sont infondées. Pour en savoir plus, voir ce fil: http://groups.google.com/group/android-developers/browse_thread/thread/79049af16fde46e8 – CommonsWare

0

Je pense qu'ils parlent ab à l'aide AIDL pour communiquer entre l'activité & service ...