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

Mar*_*ark 8 android android-service

我有一个服务,我想确保不会停止()当不再有任何活动绑定它.

我知道startService()用于实现这一点,但是可以从服务的onBind()方法中调用它吗?

从活动中调用它对我来说似乎是一个黑客,因为服务知道它是否想要在onUnbind()之后闲逛.

活动指示服务的当前状态并提供一些控制,因此bindService()似乎是在此使用的适当方法.

Dav*_*ser 7

startService()从内部打电话应该没问题onBind().如果你有逻辑onBind()可以确定服务需要保持,即使客户端已经解除绑定,那么这似乎是合理的做法.

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