Service 的 "生命周期"

【 Android ‘四大组件’ 】篇 – Service 的 “使用方法” 一文中,我们分析过 Service 的两种启动方式(启动绑定),并未对生命周期作过详细总结,本篇文章我们做个探讨。


1. 生命周期

我们首先看下两种启动方式下的 Service 生命周期 流程图:


m15mpn.png


2. 启动/关闭服务

流程题来源:图解Service生命周期


m3n3h8.png


(1)首次创建服务时,系统将调用 onCreate() 方法。如果服务已在运行,就不会再调用此方法,该方法只会调用一次。

(2)在 Service 使用方法的文章中,我们说过,除了使用 stopService 来停止服务意外事件,服务本身内部也可以调用 stopSelf 方法来停止。


3. 绑定/解绑服务

流程题来源:图解Service生命周期


m3ntXj.png


(1)如果第一次 bindService,会执行 Service 的 onCreate 方法,然后调用 onBind 方法。

(2)服务解绑,一定要保证是在绑定的前提下,不然应用会报错,直接 Crash。


4. 四种方法同时使用

流程题来源:图解Service生命周期

m38I6f.png

m3Yfh9.png