当服务不再使用且将被销毁时,系统将调用此方法。服务应该实现此方法来清理所有资源,如线程、注册的侦听器、接收器等。 这是服务接收的最后一个调用。
<service>
元素 请始终使用显式 Intent 启动或绑定 Service
,且不要为服务声明 Intent 过滤器。可以通过添加 android:exported
属性并将其设置为 "false"
,确保服务仅适用于您的应用。这可以有效阻止其他应用启动您的服务,即便在使用显式 Intent 时也如此。
启动服务由另一个组件通过调用 startService()
启动,这会导致调用服务的 onStartCommand()
方法。
服务启动之后,其生命周期即独立于启动它的组件,并且可以在后台无限期地运行,即使启动服务的组件已被销毁也不受影响。 因此,服务应通过调用stopSelf()
结束工作来自行停止运行,或者由另一个组件通过调用 stopService()
来停止它。
应用组件(如 Activity)可以通过调用 startService()
方法并传递 Intent
对象(指定服务并包含待使用服务的所有数据)来启动服务。服务通过onStartCommand()
方法接收此 Intent
。
这是 Service
的子类,它使用工作线程逐一处理所有启动请求。如果您不要求服务同时处理多个请求,这是最好的选择。 您只需实现 onHandleIntent()
方法即可,该方法会接收每个启动请求的 Intent,使您能够执行后台工作。