客户端可以使用bindService()
/调用原始的绑定/取消绑定服务unbindService()
。
我的问题是如何在服务端取消绑定服务,而不是unbindService()
由客户端调用,可能我应该调用它unbindClient
。
我认为服务应该知道绑定了哪些客户端,那么有没有办法告诉服务取消绑定特定客户端?
因为我只写服务,我不知道客户端调用unbindService()
是否正确,所以我有这个问题..
服务不能自行解除绑定。不过,您可以使已启动的服务自行停止stopSelf()
。
操作系统在幕后跟踪所有绑定和解除绑定。您不必担心对象回收,Android 会为您完成。
如果您只想限制服务启动并调用 bindService() 后返回的功能。您可以注册客户端并在完成服务后取消注册。这样绑定您的服务不会有任何影响。这我从android 网站中的Remote Messenger Service示例中选择
如果您有权访问客户端代码 -
您可以startService()
从客户端调用 - 这将启动服务(而不是Service
在退出时结束Activity
- 因为只会stopService()
关闭它)。
而且,客户可以调用bindService()
- 如果他们想要执行Activity
-Service
交互。
在退出/取消绑定客户端时,该服务将在startService()
被调用后仍然运行 -Service
可以执行其他操作,然后调用stopService()
将自行销毁。