今天讲管理绑定服务的生命周期,服务可以start和bind两种方式混合使用,生命周期就比较复杂。
管理绑定服务的生命周期
不过,如果您选择实现 onStartCommand() 回调方法,则您必须显式停止服务,因为系统现在已将服务视为已启动。在此情况下,服务将一直运行到其通过 stopSelf() 自行停止,或其他组件调用 stopService() 为止,无论其是否绑定到任何客户端。
此外,如果您的服务已启动并接受绑定,则当系统调用您的 onUnbind() 方法时,如果您想在客户端下一次绑定到服务时接收 onRebind() 调用,则可选择返回 true。onRebind() 返回空值,但客户端仍在其 onServiceConnected() 回调中接收 IBinder。下文图 1 说明了这种生命周期的逻辑。
图 1. 允许绑定的已启动服务的生命周期。
如需了解有关已启动服务生命周期的详细信息,请参阅服务文档。