首页 理论教育 服务生命周期管理:从诞生到终结

服务生命周期管理:从诞生到终结

时间:2023-06-10 理论教育 版权反馈
【摘要】:与其他组件不同的是,Service 不能自己主动运行,需要调用相应的方法来启动。服务的状态与开启者没有关系。bindService 方式开启的生命周期当其他组件调用bindService()方法时,服务被创建,客户端通过Ibinder 接口与服务通信。客户端通过unbindService()方法关闭连接,多个客户端能够绑定到同一个服务上,并且当它们都解绑时,系统将直接销毁服务。从图13-1 可以看出,startService 方式与bindService 方式开启服务时,服务生命周期中所执行的方法也不是相同的,接下来简单介绍这些方法。

服务生命周期管理:从诞生到终结

与其他组件不同的是,Service 不能自己主动运行,需要调用相应的方法来启动。启动服务的方法有两个,分别为Context.startService()和Context.bindService()。 使用不同的方法启动服务,服务的生命周期也会不同。 接下来介绍服务的生命周期。

(1) startService 方式开启服务的生命周期

当其他组件调用startService()方法时,服务会先执行onCreate()方法,接着执行onStartCommand()方法,此时服务处于运行状态,直到自身调用stopSelf()方法或其他组件调用这种方式开启。 服务的状态与开启者没有关系。

(2)bindService 方式开启的生命周期

当其他组件调用bindService()方法时,服务被创建,客户端通过Ibinder 接口与服务通信。 客户端通过unbindService()方法关闭连接,多个客户端能够绑定到同一个服务上,并且当它们都解绑时,系统将直接销毁服务(服务不需要被停止)。 这种方式开启的服务与开启者的状态有关,当调用者销毁了,服务也会被销毁。

上述两种启动方式的服务的生命周期,如图13-1 所示。

从图13-1 可以看出,startService 方式与bindService 方式开启服务时,服务生命周期中所执行的方法也不是相同的,接下来简单介绍这些方法。

onCreate():第一次创建服务时执行的方法。(www.xing528.com)

OnDestory():服务被销毁时执行的方法。

图13-1 Service 的生命周期

onStrartCommand():客户端通过调用startService()显示启动服务时执行该方法。

onBind():客户端通过调用bindService()启动服务时执行该方法。

onUnBind():客户端调用unbindService()断开服务绑定时执行的方法。

上述这些方法都是Service 生命周期中的重要回调方法,通过该方法可以观察服务创建、开启、绑定、解绑、销毁等过程。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈