2010-01-15 11 views
8

J'ai plusieurs activités et un service. En MainActivity je me connecte avec succès au service (en utilisant une classe qui implémente ServiceConnection + bindService() + startService()) mais lorsque je tente d'appliquer même méthode à d'autres activités que je vois dans LogCat une erreur:Comment rester connecté à un service Android entre plusieurs activités?

01-15 22:29:37.438: ERROR/ActivityThread(12206): android.app.ServiceConnectionLeaked: 
    Activity com.app.liviu.simpleMusicPlayer.PlaylistActivity has leaked ServiceConnection 
    com.app.li[email protected]43713c90 
    that was originally bound here. 

Est-il possible de se connecter un service d'une autre manière: quelque chose comme rendre statique mon objet CounterServiceConnection dans MainActivity et l'utiliser dans le second?

Répondre

15

Le message d'erreur est assez explicite: vous une fuite de un ServiceConnection, par lequel Android signifie que vous appelez bindService() mais n'appellent pas unbindService() et l'activité appelée bindService() a été détruite. Assurez-vous d'appeler unbindService() dans onDestroy(), sinon plus tôt.

something like to make static my CounterServiceConnection object in MainActivity and use it in the seconde one?

n °

+3

cela veut dire que l'erreur est, pas comment résoudre le problème – Will

+0

je reçu ce message d'erreur en appelant bindService, puis bindService à nouveau dans la même activité – Blundell

+0

J'appelle unbindService (ce) surDestroy. Pour lier J'appelle 'booléenne bindResult = bindService (nouvelle intention (\t \t \t \t \t Consts.MARKET_BILLING_SERVICE_ACTION), cela // ServiceConnection. \t \t \t \t \t Context.BIND_AUTO_CREATE)'. Que pourrais-je faire de mal? – Siddharth

0

Vous pouvez lier d'un thread séparé aussi longtemps que vous installez un looper dans ce thread