天天看点

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()

Services的生命周期

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

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

另一种可能

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

Service的使用:http://blog.csdn.net/wu_wxc/article/details/51377512

认真看完也就能掌握Service了