Service生命周期详解

本文详细介绍了Android服务的两种使用方式及其生命周期方法。服务可通过Context.startService()启动,并通过Context.stopService()停止;也可通过定义的接口进行绑定和操作。文章还讲解了服务的生命周期回调方法,包括onCreate(), onStart() 和onDestroy()等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

服务以两种方式使用:
• 它可以启动并运行,直至有人停止了它或它自己停止。在这种方式下,它以调用
Context.startService()启动,而以调用Context.stopService()结束。它可以调用
Service.stopSelf() 或Service.stopSelfResult()来自己停止。不论调用了多少次
startService()方法,你只需要调用一次stopService()来停止服务。
• 它可以通过自己定义并暴露出来的接口进行程序操作。客户端建立一个到服务对象的连接,并通
过那个连接来调用服务。连接以调用Context.bindService()方法建立,以调用
Context.unbindService()关闭。多个客户端可以绑定至同一个服务。如果服务此时还没有加
载,bindService()会先加载它。
这两种模式并不是完全分离的。你可以绑定至一个用startService()启动的服务。比如说,一个后台音乐
播放服务可以调用startService()并传递给它一个包含欲播放的音乐列表的Intent 对象来启动。不久,当
用户想要对播放器进行控制或者查看当前播放曲目的详情时,会启用一个activity,调用bindService()
连接到服务来完成操作。在这种情况下,直到绑定连接关闭stopService() 才会真正停止一个服务。
与activity 一样,服务也有一系列你可以实现以用于监控其状态变化的生命周期方法。但相对于activity
要少一些,只有三个,而且,它们是public 属性,并非protected:
void onCreate()
void onStart(Intent intent)
void onDestroy()
倚仗实现这些方法,你监控服务的两个嵌套的生命周期循环:
• 服务的完整生命周期始于调用onCreate()而终于onDestroy()方法返回。如同activity 一样,
服务在onCreate()里面进行它自己的初始化,而在onDestroy()里面释放所有资源。比如说,
一个音乐回放服务可以在onCreate()中创建播放音乐的线程, 而在onDestroy()中停止这个线
程。
• 服务的活跃生命周期始于调用onStart()。这个方法用于处理传递给startService()的Intent
对象。音乐服务会打开Intent 来探明将要播放哪首音乐,并开始播放。
服务停止时没有相应的回调方法──不存在onStop()方法。
onCreate()和onDestroy()方法在所有服务中都会被调用,不论它们是由Context.startService()还是由
Context.bindService()所启动的。而onStart()仅会被startService()所启用的服务调用。
如果一个服务允许别的进程绑定,则它还会有以下额外的回调方法以供实现:
IBinder onBind(Intent intent)
boolean onUnbind(Intent intent)
void onRebind(Intent intent)
传递给bindService 的Intent 的对象也会传递给onBind()回调方法,而传递给unbindService()的
Intent 对象同样传递给onUnbind()。如果服务允许绑定,onBind()将返回一个供客户端与服务进行交互
的通讯渠道。如果有新的客户端连接至服务,则onUnbind()方法可以要求调用onRebind() 。
下图描绘了服务的回调方法。尽管图中对由startService 和startService 方法启动的服务做了区分,但
要记住,不论一个服务是怎么启动的,它都可能允许客户端的连接,所以任何服务都可以接受onBind()
和onUnbind()调用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值