可以从Service.onBind()中调用Service.startService()吗?

我有一个服务,我想确保不停止()时,不再有任何活动绑定到它。

我明白,startService()是用来实现这一点,但是可以从服务的onBind()方法中调用它?

从这个活动中调用它看起来对我来说是个黑客,因为服务器知道onUnbind()之后是否想要闲逛。

这些活动表明了服务的当前状态并提供了一些控制,所以bindService()看起来就像在这里使用的合适的方法。

Solutions Collecting From Web of "可以从Service.onBind()中调用Service.startService()吗?"

onBind()调用startService()应该onBind() 。 如果在onBind()中有逻辑可以确定服务需要保持,即使客户端没有绑定,那么这似乎是合乎逻辑的地方。

我不同意那个声称不推荐的答案。 你所描述的架构正在有效地使用封装。 客户只想绑定/解除绑定,他们不应该知道服务是如何(内部)实现的。 服务应该控制自己的生命周期。

不build议从onBind()调用startService()onBind()是为了连接到客户端,你不应该改变行为。

在客户端连接之前,让它调用startService() ,如果服务已经在运行,那么它将不起作用,客户端对象就可以绑定了。 当客户解除绑定时服务仍然会运行。 如果服务知道什么时候不在周围,可以安全地调用stopSelf()并退出。