Android之service生命周期及启动方式

本文详细介绍了Android中服务(Service)的概念及用途,包括其生命周期回调方法、两种启动方式及其区别。服务作为Android应用的重要组成部分,可以在后台执行长时间运行的操作。

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

服务的用途

如果不给应用提供用户界面,应该怎么做呢?如果不用看,不用操作,只要任务在后台运行就行了,如播放音乐,又该怎么做呢?好办,使用服务service)吧。与activity一样,服务是一个有生命周期回调方法的应用组件。这些回调方法同样会在主UI线程上运行。


服务的生命周期

                官方的生命周期图

官方生命周期图

回调方法

onCreate(…)方法:服务创建时调用;
onStartCommand(Intent,int,int)方法:每次组件通过startService(Intent)方法启动服务时调用一次。
onBind(Intent)方法:每次绑定服务时调用。
onUnbind(Intent)方法:服务绑定终止时调用。
onDestroy()方法:服务不再需要时调用。


服务的两种启动方式

startservice模式

在同一个应用任何地方调用 startService() 方法就能启动 Service 了,然后系统会回调 Service 类的 onCreate() 以及 onStart() 方法。这样启动的 Service 会一直运行在后台,直到 Context.stopService() 或者 selfStop() 方法被调用。另外如果一个 Service 已经被启动,其他代码再试图调用 startService() 方法,是不会执行 onCreate() 的,但会重新执行一次 onStart() 。

bindservice模式

另外一种 bindService() 方法的意思是,把这个 Service 和调用 Service 的客户类绑起来,如果调用这个客户类被销毁,Service 也会被销毁。用这个方法的一个好处是,bindService() 方法执行后 Service 会回调上边提到的 onBind() 方发,你可以从这里返回一个实现了 IBind 接口的类,在客户端操作这个类就能和这个服务通信了,比如得到 Service 运行的状态或其他操作。如果 Service 还没有运行,使用这个方法启动 Service 就会 onCreate() 方法而不会调用 onStart()。

两种启动方式的区别

startService() 的调用者与服务没有联系,即使调用者退出了,服务仍然运行,而bindService() 的调用者与服务绑在一起,调用者一旦退出了,服务也随即终止掉。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值