Services的生命周期

转载请标明出处:http://blog.csdn.net/wu_wxc/article/details/51366772
本文出自【吴孝城的CSDN博客】

Android的四大组件之一:Services
官网介绍:http://developer.android.com/guide/components/services.html
Service是Android的一个程序组件,运行在后台且不提供用户界面,能被其他应用程序启动,必须在AndroidManifest.xml里声明
Service运行在程序所在进程的主线程(UI线程)中,如果要执行一些很耗CPU的工作或者一些阻塞操作,应创建一个子线程来执行

Service的启动方式有两种:Started和Bound

Started:非绑定服务
通过startService()启动,Service经历了:onCreate() –> onStartCommand()
这时Service处于运行状态,其中onStartCommand()可以执行多次
通过stopService()停止,Service经历了:onDestroy()
这里Service停止

Bound:绑定服务
调用bindService()方法,Service会运行onCreate() –> onBind(),这时调用者和Service绑定在一起,onBind()只能绑定一次
当完成操作时,调用unbindService()方法解除绑定,解除绑定后系统会销毁这个服务
调用者退出,Service就会调用onUnbind() –> onDestroy()销毁服务

当其他组件要通过bindService()来绑定服务时,系统会回调onBind()方法,在onBind()中必须返回IBinder来返回一个接口,客户端通过它来与服务器通信,如果不想被绑定,就返回null。

总结下Service的生命周期
调用startService()的生命周期为:onCreate() –> onStartCommand() –> onDestroy()
调用bindService()的生命周期为:onCreate() –> onBind()–> onUnbind() –> onDestroy()
这里写图片描述

startService()启动的服务在启动服务的组件退出时服务还在,可通过stopSelf()或stopSelfResult自己停止,或由其他组件调用stopService()来终止

bindService()启动的服务在启动服务的组件退出时服务也会停止,解除绑定服务也会停止

另一种可能
如果启动服务后绑定了服务,调用stopService()方法服务是不会停止的,只能调用unbindService()解绑,解绑后服务就会停止


Service的使用:http://blog.csdn.net/wu_wxc/article/details/51377512
认真看完也就能掌握Service了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值