2012-07-25 93 views
0

能否有人为我解释一下为什么叫unbindService后,我仍然能够与服务进行通信?AIDL,Android和取消绑定服务

流程:

bindService(new Intent(IService.class.getName()), conn, Context.BIND_AUTO_CREATE) 
... 
mService = IService.Stub.asInterface(service); 
... 
writeToOutput("Droping bombs from: " + mService.getPid()); 
... 
unbindService(mCurConnection); 
... 
writeToOutput("Droping bombs from: " + mService.getPid()); // no exception - still returns good values 
... 

回答

1

也许该服务仍在工作的任务。

在它指出调用unbindService(连接)简单地允许服务在任何时候停止了谷歌文档。它并没有提到这是一个难以制止的停止或停止。

从谷歌文档: “从应用服务断开作为服务重新启动,现在的服务被允许在任何时候停止您将不再接听电话。”

另一种可能性是,你可能有其他活动结合到服务等只要你有至少一个绑定的接口服务保持活动状态。

如果你想发布更多关于你在做什么的细节,我可以提供更好的解决方案。

谢谢

+0

我想从ApiDemos复制RemoteService。问题是我不想结束服务,但关闭用户的连接。我知道有其他方法可以做到这一点,但我只是想知道为什么它仍然允许通信我已经告诉结束连接后。 – LazyBones 2012-07-25 14:37:42

+0

它可能仍然是工作的任务,因此允许通信。作为该服务的客户端,您应该让代码的结构化方式使得在调用断开连接之后,在显式连接或重新连接之前,不再与服务进行通信。 – Birdnado 2014-11-17 19:31:07