2010-11-23 27 views
1

J'ai un service qui se connecte à un serveur (socket TCP ordinaire) et reçoit des mises à jour de données dans un thread. Je veux stocker ces données (après un peu de traitement) dans un modèle auquel peuvent accéder plusieurs activités (généralement ListView avec des ArrayAdapters personnalisés). Dans les activités, j'utilise bind pour obtenir un handle du service afin qu'il puisse accéder au modèle et s'enregistrer en tant qu'écouteur pour recevoir des notifications lorsque le modèle change.Comment faire pour Android: Modèle de service interne, accessible par plusieurs activités

Le problème est que l'accès au modèle doit être thread-safe. D'abord j'ai pensé que j'appellerais runOnUIThread avec les données entrantes dans le service pour mettre à jour le modèle, mais le service n'a pas cette routine. Toute autre façon de mettre à jour le modèle à l'intérieur du service à partir du thread de l'interface utilisateur? Ou y a-t-il une meilleure architecture/modèle que je devrais utiliser?

Répondre

0

Pas de réponse, mais c'est ce que j'ai fini par: Chaque appel ... (par exemple onCreate, onBind etc.) est exécuté sur le thread UI, donc j'ai fini par créer un gestionnaire dans onCreate et poster sur ce gestionnaire mettre à jour mon modèle sur le thread de l'interface utilisateur.