2010-11-21 3 views
0

J'ai une situation que je vais essayer d'expliquer clairement. J'ai deux services, Service A et Service B. L'activité C se connecte au service A en utilisant onBind(). Le service A se connecte au service B à l'aide d'un objet de rappel. Je veux que l'onbind de Service A ne soit pas exécutée jusqu'à ce que le Service B soit connecté au Service A. Quel sera un bon moyen d'y parvenir?Service Android se connectant à un autre service

+0

Voir une autre réponse à http://stackoverflow.com/questions/6488445/could-a-service-bind-another-service – pzulw

Répondre

2

La bonne réponse est: combinez les deux services en un.

La prochaine meilleure réponse est: redessiner votre application telle que A ne lie pas à B ou C qui ne se soucie pas de savoir si A est lié à B.

+0

Je ne peux pas les combiner car B n'est pas à moi, et A a besoin de B pour faire son travail. – techbeast

+1

@techbeast: Alors la meilleure réponse est la meilleure. Vous ne trouverez pas un moyen fiable pour que le timing de reliure fonctionne comme vous le souhaitez. La prochaine meilleure réponse est d'éliminer A, en repliant sa logique en C. – CommonsWare

0

Vous ne pouvez pas retarder l'appel de la onBind . Si l'interaction de votre service est telle qu'il ne sera peut-être prêt à être utilisé que plus tard, vous pouvez avoir une méthode sur l'interface retournée par onBind qui permet à un client d'obtenir un rappel quand il est prêt. (Vous pouvez même avoir cette configuration où l'interface principale est juste "getRealInterface" qui prend un rappel, qui est donné l'interface réelle pour votre service une fois que vous êtes prêt à le donner.)