在第二次调用bindService()时再次实例化Android服务

时间:2014-02-20 14:57:51

标签: android android-service

我有一个Service我想在我的应用程序启动时启动,然后从不同的活动绑定到它,给它一些命令在工作线程中运行。我可以正常启动服务,并且在使用bindService的活动中将第一次时间绑定到它,它会附加到我最初调用startService时创建的实例。

然而,我致电bindService 第二次时,会创建一个实例!根据我对文档的理解,这不应该发生 - 因为我使用startService手动启动服务,它应该像一个单例,并且任何后续调用绑定到它应该作用于同一个服务。

我将Logcat调用添加到构造函数onStartCommandonDestroy调用中。第一个服务永远不会被销毁,但是在第二个绑定上再次调用构造函数和start命令:

Starting service from app launch...
Service instantiated
onStartCommand called
binding from Activity A
calling method A from binder
binding from Activity B
Service instantiated
onStartCommand called
calling method B from binder

1 个答案:

答案 0 :(得分:0)

我在服务绑定器中添加了更多日志记录到方法A,并发现它没有返回。我注释掉了方法体,以便它立即返回,这导致在同一个服务实例上正确调用方法B.我假设由于在主线程的onServiceConnected回调中调用了方法A,这影响了未来绑定调用的执行方式。

tl; dr - 我的特定Binder实现问题,没有启动和绑定服务。

相关问题