如何在多个活动之间保持与Android服务的连接?

8

我有多个活动和一个服务。在 MainActivity 中,我成功地连接到了服务(使用实现了 ServiceConnection + bindService() + startService() 的类),但是当我尝试在其他活动中应用相同的方法时,在 LogCat 中看到了一个错误:

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

是否可以以其他方式连接到服务:例如,在MainActivity中将我的CounterServiceConnection对象设置为静态,并在第二个对象中使用它?

2个回答

15
错误信息相当自我解释:你正在泄漏一个ServiceConnection。Android的意思是,你正调用bindService()但是没有调用unbindService(),并且调用bindService()的活动已被销毁。确保在onDestroy()中调用unbindService(),如果不是更早的话。

类似这样,在MainActivity中将我的CounterServiceConnection对象静态化,并在第二个对象中使用它?

不。


3
这句话的意思是说明了错误是什么,而不是如何解决问题。 - Will
我在同一个Activity中调用bindService,然后再次调用bindService时收到了此错误消息。 - Blundell
我在onDestroy中调用unbindService(this)。为了绑定服务,我调用boolean bindResult = bindService(new Intent(Consts.MARKET_BILLING_SERVICE_ACTION), this, Context.BIND_AUTO_CREATE)。我可能做错了什么? - Siddharth

0

只要在该线程中安装一个 looper,就可以从单独的线程绑定它。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接