转载请标明出处: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了